python基础知识07-函数作用域和匿名函数

1.匿名函数

list(filter(lamda a:a>3,[1,2,3,4,5]))

一般和过滤器一起使用

2.函数的作用域

a = 123

def test():

a = 666

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

关机后自动取消

history查看历史

posted @ 2019-06-06 11:06  博立克  阅读(170)  评论(0编辑  收藏  举报