匿名函数
filiter(lambda x: x>10,li)
lambda 参数: 表达式
匿名函数的应用场景
简单的函数,可以不使用def定义,使用匿名函数即可
类似于filter和map等函数里面,可以使用匿名函数来处理
匿名函数的合理使用可以让代码更简洁
函数作用域
外部不能访问函数内部变量
函数内部能够访问函数外部变量
函数里面不能修改函数外部变量
函数里面和函数外面变量名相同
global全局变量
x = 1
def fun1():
global x
x = x+1
rutrun x
nonlocal(局部变量)
def fun2():
a = 1
def fun3():
nonlacal a
a = a+1
return a
return fun3()
函数作用域
函数内部:函数内部的变量,作用域只在函数内部,函数内部不能直接修改函数外部的变量。
global:函数内部如果需要更改全局变量,就需要使用global修饰变量
nonlocal:在函数嵌套函数的情况下,同样也有函数作用域问题,但是python3中提供了方便,只需要使用nonlocal就可以在里层函数的内部修改外层函数变量
闭包
闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包
闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用
闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁
.
递归
def fun(n):
if n ==1:
return 1
return fun(n-1)*n
回调:
def back(fu,n):
if n:
fu()
else:
print('xx')
def fu():
print('huidiao')
back(fu,n)