1.匿名函数
lambda
格式:变量 = lambda 参数:表达式
print(变量(参数数值))
表达式相当于返回值
a = lambda b:b
print(a(100))
结果:100
2.函数作用域
2.1.globol 改变函数内部的变量改成全局变量
格式:def 函数名():
globol 变量
变量 = 数值
print(变量)
调用:函数名()
print(变量)
a = 100
def b():
global a
a = 200
print(a)
b()
print(a)
结果:200 200
a = 100
def b():
a = 200
print(a)
b()
print(a)
结果:200 100
2.2.nonlocal 改变函数内部的变量改变成局部变量
格式:nonlocal 变量
适用于嵌套函数
def b():
a =200
def b1():
nonlocal a
a = a + 100
return a
return b1()
c = b()
print(c)
结果:300
3.闭包
在嵌套函数的基础上才叫闭包
格式:def 函数名():
def函数名1():
return 返回值1
return 返回值1
调用:变量 = 函数名()()
print(变量)
def a():
a=100
def a1():
return 100+a
return a1
b = a()()
print(b)
结果:200
def a():#外层函数
def a1():#内层函数
print('我是a1')
def a2():#内层函数
print('我是a2')
return a2#外层的函数返回内层的函数体
de = a()()#a()相当于a1(),调用a()外层函数里面的内层函数a1()
结果:我是a2
4.递归
一个函数在内部调用自己的函数称为递归
格式:def 函数名(参数):
if 参数条件:
return 返回值
return 函数名()
def a(x):
if x == 1:
return 1
return a(x - 1) + x
a1 = a(3)
print(a1)
结果:6
5.回调函数
被传入、后面又被调用的函数就称为回调函数
def a(b,c):
if c == 1:
b()
else:
print('c不等于1')
def d():
print('d函数')
a(d,2)
a(d,1)
结果:c不等于1 d函数