函数
创建一个函数:def 函数名 (参数):
调用:函数名 (参数)
特点:不需要说明返回值的类型
可以有多个返回值,但只能有一条return语句。如果有多个返回值,默认以元组形式进行打包
函数文档:用’’’ ‘’'括起,用函数名._ _doc_ _
获取,用print输出。
函数参数:位置参数:在定义函数时将函数的参数名和位置确定。位置参数必须在关键字参数和morenzhi参数的前面swap(x,y)swap
(1,2)
关键字参数:在传入输惨时明确指定形参的变量名。swap(x=1,y=2)
默认值参数:在定义函数时给出参数默认值。def swap(x=1,y=1)
收集参数:用于参数数目不确定的时候。本质是参数类型为元组的参数。写法为:*参数名
,使用时仍通过参数名调用。如除了
收集参数之外还有其它指定参数,在传递实参时要用关键参数来指定
函数体内可以调用全局变量,但不能修改全局变量本身。当试图修改时,python会创建一个与全局变量同名的局部变量,修改的并不是全局变量。如果实在要修改,用关键字 global:global x x=10
内嵌函数:在一个函数内部定义的函数
闭包:在嵌套函数的环境下,内部函数调用外部函数的局部变量。只能访问不能修改。若要修改用nonlocal关键字。用法同global。
装饰器:本质上是嵌套函数,外层函数的返回值是内层函数,将被装饰的函数作为外层函数的参数,然后在内层函数中调用被装饰的函数,
体现该函数原有的功能。在不修改原函数代码的前提下,增加函数功能,且可"批量增加"该功能。
用”@语法糖“使用装饰器:
定义装饰器函数
@装饰器函数函数名
定义目标函数
调用目标函数
lambda关键字:冒号左边是函数的参数,右边是函数返回值。该关键字创建了一个匿名函数,返回的实际上是一个函数对象,在使用时绑定一个临时的名字即可。g=lambda x:2*x+1 g(5)
filter()过滤器函数:有两个参数,第一个参数是一个函数,第二个参数是可迭代对象。将可迭代对象的每个元素依次作为参数传递给函数,返回最终返回值为true的可迭代对象元素。list(filter(lambda x: x%2,range(10)))
map():有两个参数,第一个参数是一个函数,第二个参数是可迭代对象。将可迭代对象的每个元素依次作为参数传递给函数,返回可迭代对象元素作为参数的对应函数返回值。支持多个可迭代参数:list(map(lambda x,y : x+y , [1,2,3] , [10,20,30,40]))
递归:函数内调用该函数自身。当条件满足时则成了一个死循环,故设置合适的返回条件很重要。