python基础知识07-函数作用域和匿名函数
list(filter(lamda a:a>3,[1,2,3,4,5]))
一般和过滤器一起使用
2.函数的作用域
a = 123
def test():
a = a + 1
print(a)
test()
print(a)
1.函数外面访问不到函数里面的变量
2.函数里面可以访问外面的变量
3.函数里面不能修改外面的变量,针对不可变类型而言的,对于列表等可变类型可以修改.
4.函数里面和外面变量名相同,但不是同一个.
5.函数内部用 global a 申明a为全局变量,可对外面的变量进行修改.
6.nonlocal 局部变量申明,可以使用外层非全局变量
def Q():
b = 123
def W():
nonlocal b
b = b + 1
print('进入到W函数')
W()
Q()
3.闭包
函数里面定义的函数在外面去调用.不严谨的说法.ps我个人认为就是在外层函数内部定义一个函数,内层函数的名被赋予了一个内层函数地址,最后返回内层函数名其实就是内层函数地址.这样就建立了内层函数在外层访问的联系.原本外层函数不能访问内层函数,但是通过地址传递出去内层函数,便可以访问.
def A():
print('我是A函数')
def B():
print('我是B函数')
return B
调用B,A()()
4.递归和回调函数
递归:
def fun(x):
if x == 1:
return 1
return fun(x-1)*x
print(fun(5))
返回120,要改变一个值,防止死循环.
回调函数
def fun2(f,c): f是函数名.c是判断参数
if c ==True:
f()
else:
print('不调用')
def play():
print('玩泥巴')
fun2(play,True) 这样就调用了外部的play函数,关键在于传一个函数名参数.
5.linux命令
alias 命令别名:
alias a = 'cd pyme'
a 直接执行 cd pyme
取消别名:unalias a
关机后自动取消