chapter5 函数和lambda表达式
为函数提供文档
程序可通过help()函数查看函数的说明文档,
也可以通过_doc_ 属性访问函数的说明文档。
函数的参数
关键字(keyword)参数
- 按照形参位置传入的参数被称为位置参数。
- 如果使用位置参数的方式来传入参数值,则必须严格按照定义函数时指定的顺序来传入参数值。
- 根据参数名来传入参数值,则无须遵守定义形参的顺序。
参数收集(个数可变的参数)
python允许在形参前添加一个星号(*),这么意味着该参数可以接收多个参数值,多个参数值被当成元组传入。
逆向参数收集
将传入的列表、元组、字典等对象传入参数中,
列表、元组参数前添加一个星号(*),字典参数前添加两个星号(*)
变量作用域
- 局部变量:在函数中定义的变量,包括参数,都被称为局部变量
- 全局变量:在函数外面、全局范围内定义的变量。
每个函数在执行时,系统都会为该函数分配一块“临时内存空间”,所有的局部变量都被保存在这块临时内存空间内。当函数执行完成后,这块内存空间就被释放了,这些局部变量也就失效了,因此离开函数之后就不能再访问局部变量了。
- python提供了三个工具函数来获取指定范围内的“变量字典”
- globals(): 返回全局范围内所有变量组成的“变量字典”
- locals(): 该函数返回当前局部范围内所有变量组成的“变量字典”
- vars(object): 获取在指定对象范围内所有变量组成的“变量字典”
局部函数
全局函数:在全局范围内定义的
局部函数:被放在函数体内定义的函数
nonlocal和global功能大致相似,区别是global用于声明全局变量,而nonlocal用于声明访问当前函数所在函数内的局部变量
函数高级内容
函数变量
函数本身可以赋值给变量,当函数赋值给变量后,程序可以通过变量来调用函数
使用函数作为函数形参
函数作为返回值
lambda函数
语法格式
lambda [parameter_list]:表达式
- 对于单行函数,使用lambda表达式可以省去定义函数的过程,让代码更加简洁
- 对于不需要多次复用的函数,使用lambda表达式可以在用完之后立即释放,提高了性能。