1. 匿名函数 2. 函数作用域 3. 闭包 4. 递归函数
1. 匿名函数
lambda 参数 : 表达式
只能用来写一个简单的函数
li = [1,2,4,6,8,3,9]
f = lambda x : x>5
print(list(filter(f,li)))
2. 函数作用域
函数外部不能访问函数内部变量;
函数内部能够访问函数外部变量;
函数里面不能修改函数外部变量;
函数里面和函数外部变量名相同。
global
global:在函数内部改变全局变量
x = 123
def fun1():
global x
x += 1
return x
nonlocal
nonlocal:在里层函数内部修改外部函数变量,只取上一层变量
def fun2():
x = 123
def fun3():
nonlocal x
x += 1
return x
return fun3()
3. 闭包
闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包
def fun1():
print('外层')
def fun2():
print('内层')
return fun2
a = fun1()
def f1(num1):
print(num1)
def f2(num2):
num = num1 + num2
print(num2,num)
return f2
a = f1(10) # 10
a(12) # 10,22
a(22) # 10,32
4. 递归函数
递归就是函数自身调用自身
但是使用时类似于条件循环一样,要有递归的终止条件