潭州课堂25班:Ph201805201 第九课 函数作用域和匿名函数 (课堂笔记)
匿名函数:
lambda obj:str(obj).isdigit
语法规则: lambda 参数:表达式
列:
ma1 = map( lambda obj:'binbin','abcdef' )
print( list(ma1) )
['binbin', 'binbin', 'binbin', 'binbin', 'binbin', 'binbin']
闭包
def fun_1():
print( '正在调用01' )
def fun_2():
print( '正在调用02' )
return fun_2
f_1 = fun_1() 正在调用01
f_1() 正在调用02
闭包是函数里边嵌套函数,外层的函数返回里层,这种情况叫闭包,他是种特殊的函数的调用,
闭包也可以得到外层函数的变量,上函数内外部的桥梁
函数作用域
global 的使用, 声明全局变量
x = 1
def fun_1():
global x # 声明全局变量
x += 1 # 在没声明前不可直接修改,否则去不去啊
print( x )
def fun_2():
print( x )
return fun_2
f_1 = fun_1()
f_1()
nonlocal 局部变量的声明
def fun_1():
x = 1
def fun_2():
nonlocal x # 声明局部变量
x += 1 # 声明后可直接查,改
print( x )
return fun_2
f_1 = fun_1()
f_1()
递归
def fun_a( n ):
if n == 1:
return 1
return fun_a( n-1 )*n
print( fun_a(5) )
自己调用自己
回调
def fun_a( a ):
if a:
fun_b()
else:
print('没有被调用')
def fun_b():
print('正在调用')
fun_a( False )