python 内嵌函数与闭包 &lambda表达式

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]]

>>> list(zip([1,2,3,4],[5,6,7,8]))
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值