【Python学习日记】B站小甲鱼:内嵌函数 闭包 和 lambda表达式

global关键字

在函数内部使用 global关键字可以修改并使用局部变量为全局变量

 

内嵌函数(内部函数)  python是支持函数的嵌套的,下面的程序会执行fun1()和fun2()的功能

def fun1():
    print('fun1被调用')
    def fun2():
        print('fun2被调用')
    fun2()
fun1()

 

闭包  下面的程序打印FunX(8)(5)也是一样的结果

def FunX(x):
    def FunY(y):
        return x*y
    return FunY
i = FunX(8)
print(i(5))

如果在嵌套函数里要使用局部变量可以使用关键字 nonlocal 

def FunX(x):
    def FunY():
        nonlocal x
        x *= x
        return x
    return FunY()

print(FunX(5))

 

匿名函数 lambda 以下两个程序是等价的

def ds(x):
    return 2*x +1
print(ds(5))

g = lambda x: 2 * x+1
print(g(5))

下面这两个程序也是等价的

def add(x,y):
    return x+y
add(4,5)

g =lambda x,y: x+y
print(g(3,4))

 

两个比较牛逼的BIF

过滤器filter()映射map()

filter(函数,序列) 把参数作为函数的实际参数,把返回true的函数列成新的列表 函数的功能是返回偶数

def odd(x):
    return x%2
temp = range(10)
show = filter(odd,temp)
print(list(show))

用lambda函数改写上面那个程序就是

show = filter(lambda x:x%2,range(10))
print(list(show))

map(函数,序列) 将序列中的每一个元素作为函数的参数进行加工,直到全部加工完毕返回新的序列

print(list(map(lambda x:x*2,range(10))))

上面这个函数返回(0,2,4,6,8,10,12,14,16,18,20)

posted @ 2020-08-23 21:04  JodyJoy  阅读(144)  评论(1编辑  收藏  举报