一、函数调用
定义:在程序设计中,函数是指用于某种计算的一系列语句的有名称的组合。定义函数时,需要指定函数的名称并编写一系列程序语句,之后可以使用名称“调用”这个函数
python3内置了很多有用的函数,可以直接调用。要调用一个函数,就需要知道函数的名称和参数。可以直接从python的官方网站查看文档
二、自定义函数
1、函数代码块以def关键字开头,后接函数标识符名称和圆括号()
2、函数的第一行语句可以选择性使用文档字符串,用于存放函数说明
3、函数内容以冒号开始,并且要缩进。函数内的语句数量是任意的
4、函数体必须保持缩进一致,因为在函数中,缩进结束就表示函数结束
(1)不带参数
(2)带参数(函数体内部使用)
注意,调用函数的时候,函数定义有几个参数,那么就需要传递几个参数
(3)带默认值
默认值的参数必须放在参数最后,否则报错,如果有默认值可以不传参数,就会使用默认值,传参之后就会使用传递的数值
(4)空函数
def nop():
pass #占位功能,一般用在想写函数,但没有写,先占位,如果不加pass则会报错,下方代码就无法写了。体现了pass的重要
(5)形参和实参
函数定义时小括号中的参数,用来接收参数称为“形参”
调用时小括号中的参数,用来传递给函数用的,称为“实参”
(6)返回值和return语句
程序中函数完成一件事后,最后给调用者的结果,称为函数的返回值
想要在函数中把结果返回给调用者,需要在函数中使用return
return语句包含以下部分:
return关键字,函数应返回的值或表达式
如果在return语句中使用了表达式,返回值就是该表达式求值的结果
如果使用不带值的return语句,那么就返回None
(7)摇奖小程序练习
三、递归函数
1、定义:如果一个函数在内部不调用其他的函数,而是自己本身的话,这个函数就是递归函数
2、如何实现的?
其实函数每次被调用时都会创建一个新命名空间,也就是当函数调用自身时,实际上是运行的两个不同的函数(也可以说一个函数具有两个不同的命名空间)
3、递归的优点:定义简单、逻辑清晰(理论上,所有递归函数都可以写成循环的方式,不过循环的逻辑不如递归清晰)
四、匿名函数
1、定义:不再使用def语句标准形式定义函数
2、关键字lambda
3、语法只包含一个语句
4、什么情况下考虑使用匿名函数?
(1)、程序一次性使用、不需要定义函数名,用匿名函数可以节省内存中变量定义的空间
(2)、如果想让程序更加整洁
5、规则
(1)、一般有一行表达式,必须有返回值
(2)、不能有return
(3)、可以没有参数,也可以有一个或多个
注意:lambda函数能接收任何数量的参数但只能返回一个表达式的值,匿名函数不能直接调用print,因为lambda需要一个表达式
五、高阶函数
1、定义:python内置了一些特殊函数,这些函数很具有python特性。可以让代码更加简洁–filter,map,reduce
三个函数比较类似,都是应用于序列的内置函数
通常与lambda表达式联合使用
2、filter函数
(1)定义:会对参数序列中的每个元素调用function函数,最后返回的调用结果为True的元素
(2)语法:filter(func,seq)–>返回一个可迭代对象
(3)应用:会对指定序列执行过滤操作,批量提取
3、map函数
(1)定义:函数的第一个参数是一个函数,剩下的参数是一个或多个序列。
function可以理解为 是一个一对一或多对一函数,map的作用是以参数序列中的每一个参数调用function函数,返回包含每次function函数的返回值
(2)语法:map(func,seq,【seq】)–>返回一个可迭代对象
(3)应用:对指定序列做批量处理
注意:在参数存在多个序列时,会依次以每个序列中相同位置的元素做参数调用function函数。
4、reduce函数(必须调用functools)
(1)定义:参数是一个必须有两个参数的函数,reduce依次从序列中取一个元素和上一次调用function的结果做参数再次调用function
第一次调用function时,如果提供初始值参数,会以序列中第一个元素和初始值作为参数调用function,否则是以序列前两个元素做参数调用function
(2)语法:reduce(func,seq,【初始值】)–>value
(3)应用:函数对参数序列中元素进行总体计算
5、列表生成器
6、迭代器
Python函数
最新推荐文章于 2025-05-30 12:14:04 发布