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

embedded/2024/11/18 7:42:16/

目录

  • 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 114514print("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 1else: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 1return 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.ppmy.cn/embedded/138468.html

相关文章

React Hooks 深度解析与实战

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks 深度解析与实战 React Hooks 深度解析与实战 React Hooks 深度解析与实战 引言 什么是 Hooks? 定义 为什么需要 Ho…

paddle表格识别数据制作

数据格式 其中主要数据有两个一个表格结构的检测框&#xff0c;一个是tokens&#xff0c;注意的地方是 1、只能使用双引号&#xff0c;单引号不行 2、使用带引号的地方是tokens里面 "<tr>", "<td", " colspan2", ">",&quo…

屏幕拾色器

屏幕拾色器 桌面应用开发中&#xff0c;经常需要用到拾色器&#xff0c;之前一般使用的WEB上的小工具&#xff0c;有些不方便&#xff0c;在网上找的一些小工具又附带一些乱七八糟的东西&#xff0c;故想要自己实现一个小工具。 Qt实现 Qt可以使用Qt Designer工具对ui进行编辑…

vue3字符串转整数

vue3字符串转整数 思路方法代码实现示例 思路方法 在 Vue 3&#xff08;或任何 JavaScript 环境&#xff09;中&#xff0c;将字符串转换为整数可以使用 JavaScript 的内置函数 parseInt()。这个函数可以将一个字符串解析为指定基数的整数。如果不指定基数&#xff0c;默认情况…

Linux运维篇-iscsi存储搭建

目录 概念实验介绍环境准备存储端软件安装使用targetcli来管理iSCSI共享存储 客户端软件安装连接存储 概念 iSCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的存储技术&#xff0c;该技术是将存储行业广泛…

[Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress

目录 1. 什么是 Docker Compose 生活案例 2. 为什么要使用 Docker Compose Docker Compose 的安装 Docker Compose 的功能 使用步骤 核心功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; 模仿示例 文件基本结构及常见…

相机光学(四十二)——sony的HDR技术

1.概述 索尼的HDR技术包括以下几种,这些技术共同构成了索尼在HDR领域的技术矩阵&#xff0c;旨在提供更宽广的动态范围、更丰富的色彩表现以及更真实的光影效果: Multi-frame HDR&#xff08;多帧异曝光HDR&#xff09;&#xff1a;这是一种通过不同曝光时间图像的多帧合成来实…

lua脚本语言基本原理

Lua是一种轻量级、高效的脚本语言&#xff0c;其原理主要包括以下几个方面&#xff1a; 词法分析 原理&#xff1a;词法分析器按从左到右的顺序对 Lua 脚本的源程序字符流进行扫描&#xff0c;依据词法规则将其识别为一个个单词&#xff0c;如关键字、标识符、常量、运算符等…