Python 小高考篇(5)自定义函数

news2024/11/18 6:54:01

目录

  • def 定义函数
    • 传入参数
    • 返回值
  • lambda 定义函数
  • 递归
  • 自测
  • 总结
  • 结尾


本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser

在python中,如果有一个代码片段需要频繁使用,则可以考虑将其写为一个自定义函数。

def 定义函数

通过def关键词,可以自定义一个函数,之后再在代码内调用它。如:

def hello():
    print("Hello World!")
    print("Hello!")
hello()

运行结果:

Hello World!
Hello!

第一行代表定义一个函数,函数名字叫hello;第2行到第3行代表该函数需要执行的东西,第4行代表执行该函数。

传入参数

就像数学公式内,我们可能会这么写: f ( x ) = x + 1 f(x)=x+1 f(x)=x+1。可以注意到,其实它有一个参数 x x x
python内定义函数也可以有参数,像这样:

def sayhello(who):
    print("Hello",who + "!")
sayhello("Jzwalliser")

运行结果:

Hello Jzwalliser!

对比一下,发现第一个例子中,在定义函数名时,后面的括号中没有任何内容(def hello():),而在第二个例子中,括号中有个“who”(def sayhello(who):)。其中,这里的“who”就是一个参数,可以理解为一个变量。再看最后一行(sayhello("Jzwalliser")),其实在这里就把who的值设置为了"Jzwalliser",所以第二行在输出有关内容时,读取到的who的值即为"Jzwalliser"。

返回值

返回值,就是一个函数运行完后还给外界的数值。如:

def plus(a,b):
    print(a + b)
def plus2(a,b):
    return a + b
result1 = plus(114000,514)
result2 = plus2(114000,514)
print("result1",result1)
print("result2",result2)

运行结果:

114514
result1 None
result2 114514

同样是加法计算,plus函数只是直接输出结果,但plus2函数更为(高明),它可以将计算结果保存到指定的变量中。
这就是返回值,在函数最后面添加一行return sth就可以将数据返回给外界,就像是函数内部和外部的桥梁一样。
不过注意,return后面的代码是不执行的,像这样:

def test():
    print("return 之前")
    return 114514
    print("return 之后")
test()

运行结果:

return 之前

lambda 定义函数

lambda是一种很简洁(偷懒)的函数定义方法,它的代码量比def定义的函数少很多,但是正因如此它所能实现的功能也远没有def多。
先看个例子,将 f ( x ) = 2 x f(x)=2x f(x)=2x分别用lambdadef变成函数:

f = lambda x:2 * x
print(f(5))
def f(x):
    return x * 2
print(f(5))

以上两段代码其实是基本等价的,可以看出第一段代码量要少很多,甚至连个return都没有,但实际上它依然有个返回值。
解释一下第一段代码什么意思:

  1. f为函数名
  2. lambda表示需要定义一个函数
  3. x是一个参数
  4. 2 * x是一个表达式,同时也是这个函数的返回值

递归

递归,就是一个函数自己调用自己。递归主要由两个部分组成:递归操作及递归边界。递归操作是函数的主体部分,负责执行运算、实现功能;递归边界即一个条件, 满足条件后停止递归,并返回上一层,以避免程序无限递归下去而陷入死循环。
比如,计算斐波那契数列就可以使用递归算法来实现。假设第 x x x项用 f ( x ) f(x) f(x)来表示( x ∈ Z + x\in\mathbb{Z_+} xZ+),那么:

f ( x ) = { 1   ( x = 1 ) 1   ( x = 2 ) f ( x − 1 ) + f ( x − 2 )   ( x ≥ 3 ) f(x)=\left\{ \begin{aligned} &1\space(x=1) \\ &1\ (x=2)\\ &f(x-1)+f(x-2)\space(x\geq 3) \\ \end{aligned} \right. f(x)=1 (x=1)1 (x=2)f(x1)+f(x2) (x3)

翻译为python如下。

def f(x):
    if x == 1 or x == 2:
        return 1
    else:
        return f(x - 1) + f(x - 2)

由于之前就写过一篇关于递归的文章,这里就不在赘述了,欲知详情,请移步到这里:初识递归算法。

自测

  1. 阅读以下代码:
def f(x):
    if x > 1:
        return x * f(x - 1)
    return 1
print(f(10))

该程序输出为( )
A. 362880
B. 3628800
C. 39916800
D. 10
【答案】B

  1. 阅读一下代码:
def f(x):
    if x == 0:
        return 1
    return f(x) * 2

这段代码表达的等价数学公式是( )
A. f ( x ) = 2 x ( x ∈ Z ) f(x) = 2^x(x\in\mathbb Z) f(x)=2x(xZ)
B. f ( x ) = 2 x ( x ∈ Z ) f(x) = 2x(x\in\mathbb Z) f(x)=2x(xZ)
C. f ( x ) = 2 x − 2 ( x ∈ Z ) f(x) = 2x-2(x\in\mathbb Z) f(x)=2x2(xZ)
D. f ( x ) = 2 x − 1 ( x ∈ Z ) f(x) =2^{x-1}(x\in\mathbb Z) f(x)=2x1(xZ)
【答案】A

总结

def 定义函数
使用def定义函数的模板:

def function(arg1,arg2,arg3): #定义函数
   returnvalue = do_sth(arg1,arg2,arg3) #操作和运算
   return returnvalue #返回值

lambda 定义函数
模板:

func = lambda arg1,arg2,arg3:do_sth(arg1,arg2,arg3)

递归
递归,即函数自己调用自己。层层深入进行计算,之后再回溯,将计算结果返回到上一层参与运算。

结尾

好啦,今天就分享到这里了,记得一键三连哦(˵¯͒〰¯͒˵)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

初识算法 · 模拟(1)

目录 前言: 替换所有的问号 题目解析 算法原理 算法编写 提莫攻击 题目解析 算法原理 算法编写 外观数列 题目解析 算法原理 算法编写 前言: ​本文的主题是模拟,通过三道题目讲解,一道是提莫攻击,一道是…

使用 Vue 和 Create-Vue 构建工程化前端项目

目录 前言1. 工程化的意义与 Vue 的生态支持2. 搭建 Vue 工程化项目2.1 环境准备2.2 使用 create-vue 创建项目2.2.1 初始化项目2.2.2 安装依赖2.2.3 本地运行 3. Vue 项目的目录结构解析4. Vue 开发流程详解4.1 项目入口与根组件4.1.1 main.js 的作用4.1.2 App.vue 的结构 4.2…

Android中的AMS(Activity Manager Service)详解

Android中的AMS(Activity Manager Service)详解 AMS (Activity Manager Service) 是 Android 系统中非常核心的服务之一,它负责管理应用程序的生命周期、任务栈、进程、广播、服务等功能。AMS 是整个 Android Framework 的调度中心&#xff…

31.3 XOR压缩和相关的prometheus源码解读

本节重点介绍 : xor 压缩value原理xor压缩过程讲解xor压缩prometheus源码解读xor 压缩效果 xor 压缩value原理 原理:时序数据库相邻点变化不大,采用异或压缩float64的前缀和后缀0个数 xor压缩过程讲解 第一个值使用原始点存储计算和前面的值的xor 如果XOR值为0&…

UNIAPP发布小程序调用讯飞在线语音合成+实时播报

语音合成能够将文字转化为自然流畅的人声,提供100发音人供您选择,支持多语种、多方言和中英混合,可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。 在当下大模型火爆的今日,语音交互页离不开语音合…

【蓝牙协议栈】【BLE】【BAS】精讲蓝牙电池服务

1. 蓝牙电池服务(Bluetooth Battery Service)概念 蓝牙电池服务是蓝牙设备与其他设备通信时用于报告其剩余电池电量的标准服务。它让用户能够随时了解蓝牙设备(如无线耳机、智能手表、蓝牙鼠标/键盘等)的电池状态,从而方便地管理这些设备的续航与电源使用。 BAS通常用于在…

无线迷踪:陈欣的网络之旅

第一章 陈欣是一名资深的网络工程师,工作在一家领先的科技公司。她的生活平静而有序,直到有一天,公司的无线网络突然出现了严重的问题。员工们的设备频繁断开连接,无法正常使用。这个问题不仅影响了工作效率,还引起了…

【redis】—— 环境搭建教程

上一节,我们大致了解了Redis的几个重要版本,在本教程中,我们选择了5.0版本,因为5.0已经具备了大部分的功能特性,并且与7.0版本相比,其安装使用过程更为简便。 Redis的官方并不直接支持微软的Windows操作系统…

如何查看python源代码

众所周知,Python内建了许多函数模块,并且我们可能还会安装许多第三方模块等等。 下面以getpass为例查看其源代码。 1.help(getpass) 输入该命令找到file路径,并且可以查看其其提供的功能。 2.利用getpass.__file__查看位置 最后找到该文件…

java笔试练习题笔记(10)

关于继承和实现说法正确的 是 ? ( )A.类可以实现多个接口,接口可以继承(或扩展)多个接口 B.类可以实现多个接口,接口不能继承(或扩展)多个接口 C.类和接口都可以实现多个接口 D.类和接口都不…

前端开发之打印功的使用和实例(vue-print-nb)

通过插件来进行实现 前言效果图1、安装插件vue2vue32、 引入Vue项目2、 使用2.1、在项目中创建按钮并且使用v-print绑定绑定打印事件2.2、编写要打印的内容,给内容附加唯一的id2.3、绑定的时间的方法和参数3、整体代码(此代码是通过vue3来进行实现的但是逻辑都是一样的)前言…

NavVis VLX3的精度怎么去进行验证?【上海沪敖3D】

01、精度评价现状 三维捕捉行业还没有建立一个用于估算或验证移动激光扫描系统精度的统一标准。因此,需要高精度交付成果的专业人士很难相信设备所标注的精度规格,也就很难知道基于SLAM的移动激光扫描系统是否适合当前的项目。 NavVis将通过展示一种严格…

Java | Leetcode Java题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; class Solution {public String nearestPalindromic(String n) {long selfNumber Long.parseLong(n), ans -1;List<Long> candidates getCandidates(n);for (long candidate : candidates) {if (candidate ! selfNumber) {if (ans…

ES6标准-Promise对象

目录 Promise对象的含义 Promise对象的特点 Promise对象的缺点 Promise对象的基本用法 Promise对象的简单例子 Promise新建后就会立即执行 Promise对象回调函数的参数 Promise参数不会中断运行 Promise对象的then方法 Promise对象的catch()方法 Promise状态为resolv…

如何利用CSS制作导航菜单

1.利用CSS技术&#xff0c;结合链接和列表&#xff0c;设计并实现“山水之间”页面 示例代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>山水之间</title><style>.all{width:900px;}.top{width:900px;h…

Github 2024-11-17 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10JavaScript项目2Nextcloud服务器:安全的数据之家 创建周期:2796 天开发语言:PHP, JavaScript协议类型:GNU Affero General Public…

【工具变量】2024-2025年地级市异质性数据、城市分组异质性数据(老工业、环境保护、人口流入、沿海等)

一、数据范围&#xff1a; &#xff08;1&#xff09;南北方城市 &#xff08;2&#xff09;东中西城市 &#xff08;3&#xff09;七大地理区、八大综合经济区 &#xff08;4&#xff09;城市群&#xff0c;长三角珠三角京津冀等 &#xff08;5&#xff09;长江流域沿岸、黄河…

响应式网页设计--css

CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;是用来控制网页的外观和布局的语言。它与 HTML 一起工作&#xff0c;通过样式定义网页元素的显示方式。CSS 可以控制多种视觉效果&#xff0c;如字体、颜色、布局、间距等。 基本语法&#xff1a; C…

定时器的小应用

第一个项目 第一步&#xff0c;RCC开启时钟&#xff0c;这个基本上每个代码都是第一步&#xff0c;不用多想&#xff0c;在这里打开时钟后&#xff0c;定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…