【Python学习日记】B站小甲鱼:内嵌函数 闭包 和 lambda表达式
global关键字
在函数内部使用 global关键字可以修改并使用局部变量为全局变量
内嵌函数(内部函数) python是支持函数的嵌套的,下面的程序会执行fun1()和fun2()的功能
def fun1(): print('fun1被调用') def fun2(): print('fun2被调用') fun2() fun1()
闭包 下面的程序打印FunX(8)(5)也是一样的结果
def FunX(x): def FunY(y): return x*y return FunY i = FunX(8) print(i(5))
如果在嵌套函数里要使用局部变量可以使用关键字 nonlocal
def FunX(x): def FunY(): nonlocal x x *= x return x return FunY() print(FunX(5))
匿名函数 lambda 以下两个程序是等价的
def ds(x): return 2*x +1 print(ds(5)) g = lambda x: 2 * x+1 print(g(5))
下面这两个程序也是等价的
def add(x,y): return x+y add(4,5) g =lambda x,y: x+y print(g(3,4))
两个比较牛逼的BIF
过滤器filter()和映射map()
filter(函数,序列) 把参数作为函数的实际参数,把返回true的函数列成新的列表 函数的功能是返回偶数
def odd(x): return x%2 temp = range(10) show = filter(odd,temp) print(list(show))
用lambda函数改写上面那个程序就是
show = filter(lambda x:x%2,range(10)) print(list(show))
map(函数,序列) 将序列中的每一个元素作为函数的参数进行加工,直到全部加工完毕返回新的序列
print(list(map(lambda x:x*2,range(10))))
上面这个函数返回(0,2,4,6,8,10,12,14,16,18,20)