0.在函数中修改全局变量的值,应该使用global关键字
>>> num = 1
>>> def FunA():
global num
num = 5
print(num)
>>> FunA()
5
>>>
1. 在内嵌函数中,如果在内部函数修改外部函数的局部变量,应该用nonlocal关键字
在没有nonlocal之前,通过将变量赋值为列表变为容器类型在内部函数进行访问修改
>>> def FunB():
x=[1]def FunC():
x[0] +=1
return x[0]
return FunC()
>>> FunB()
2
利用nonlocal关键字
>>> def FunB():
x=1
def FunC():
nonlocal x
x +=1
return x
return FunC()
>>> FunB()
2
2.闭包:函数式编程。
def FunA(x):
def FunB(y):
return x*y
return FunB
3. lambda表达式:写脚本时省去定义函数的过程。
>>> g = lambda x: x+1
>>> g(9)
10
>>> g = lambda x,y : x+y
>>> g(9,8)
17
>>>
4.两个强大的BIF:filter();映射 map();
>>> filter(None,[0,1,2,True,False])
<filter object at 0x0000000002EFCC50>
>>> list(filter(None,[0,1,2,True,False]))
[1, 2, True]
#lambda表达式与filter&map结合使用,简单快捷!
>>> list(filter(lambda x: x>2,range(10)))[3, 4, 5, 6, 7, 8, 9]
>>> >>> list(map(lambda x: x*2,range(5)))
[0, 2, 4, 6, 8]
>>>
#map()映射与zip()对比;map输出列表形式,zip()输出元组;
>>> list(map(lambda x,y :[x,y],[1,2,3,4],[5,6,7,8]))
[[1, 5], [2, 6], [3, 7], [4, 8]]
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>>