python函数
函数产生
减少重复代码使用
使代码逻辑性更强
函数定义
1 def function(参数): 2 pass 3 return 结果
参数传递
传值:整数、字符串、元组。传递的只是值,没有影响a对象本身。比如在 function(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
传址:列表,字典。如 function(a),则是将 a 真正的传过去,修改后fun外部的la也会受影响。这里主要是深浅拷贝,以列表为例,因为a指向的是列表作为整体的地址,列表本身中的元素,又指向元素本身存储的地址。列表元素的变化不会影响列表做为整体的地址变化。
函数参数分类
必须参数
参数必须选择;顺序不能有错误;参数类型需要正确。
关键字参数
顺序不做要求;需要使用关键字来明确传入的数据。
默认参数
如果没有传递参数,则使用默认参数,如果定长参数,默认参数必须放在最后,不定长参数需要放在参数的最左边。
不定长参数
传入的参数超过函数定义的参数,
function(*args, **kwargs),顺序位置很重要,*args参数要放在左边,*kwargs参数要放在右边
简单理解:参数的优先级为必须,默认,元组,字典。
如果传入列表,列表前面需要加上符号*,否则整个列表作为单个元素传入到函数中;字典同样如此。
函数返回值
返回某种数据类型,如果有多个数据,则会返回元组。
返回的内容给调用者
结束函数
函数作用域
LEGB
local局部作用域,函数中定义的变量
enclosing嵌套的父级函数局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的。
global全局变量,就是模块级定义的变量。
built_in,系统固定模块里面的变量。
作用域的优先顺序
作用域局部>外层作用域>当前模块中的全局>python内置作用域
函数本身
函数名能进行赋值,因为函数名字是变量。
函数名可以作为函数参数,还可以作为函数的返回值。
关键字
global,全局作用域变量声明
nonlocal,外层作用域变量声明
高阶函数
满足函数名可以作为参数输入;函数名还可以作为返回值。
递归函数
如果一个函数在内部调用自身本身,这个函数就是递归函数。
必须有函数的出口,也就是结束条件。
使用递归的程序,循环都能解决。
递归效率低下,不推荐使用。
filter(function, iterable)
过滤序列,过滤掉不符合条件的元素,返回符合条件的迭代器对象。
map(function, iterable, ....)
根据提供的函数对iterable里面的每个元素处理返回迭代器对象。
reduce(function, iterable[, iterable])
根据function函数先对iterable里面前两个元素进行操作,返回的额结果再与第三个元素操作,依次类推,返回一个结果。
lambda x, y: x+y
洛必达匿名函数,实际上是个表达式,返回的是一个结果。
浙公网安备 33010602011771号