Python闭包函数和一些BIF

闭包函数和一些BIF

闭包函数, 在函数内部定义函数.
当然, 要注意的是, 变量的作用域


>>> def Fun1(x):
...     def Fun2(Y):
...         return x*Y
...     return Fun2
... 
>>> i = Fun1(2)
>>> i(2)
4
>>> Fun1(2)(3)
6

当变量在错误的作用域中, 就会抛出异常, 使用 nonlocal 可以使局部变量作用域的进行一点修改


>>> def Fun3(x):
...     def Fun4(y):
...         x *= x;
...         return x;
...     return Fun4;
... 
>>> Fun3(3)(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in Fun4
UnboundLocalError: local variable 'x' referenced before assignment

>>> def Fun3(x):
...     def Fun4(y):
...         nonlocal x
...         x *= x;
...         return x;
...     return Fun4;
... 
>>> Fun3(2)(4)
4

这里都是用了 lambda, 如同 c++中的lambda, 只是少了(){}和 []
即, lambda x : x % 2. 传入x, 当返回 x % 2 为 True的数据

filter : 过滤.
filter(function, A), 将A中的数一个个传入function中, 进入function, 只返回是True的数据, 其余的抛弃掉


>>> lists = filter(lambda x : x % 2, range(1, 10))
>>> lists
<filter object at 0x037AC710>
>>> list(lists)
[1, 3, 5, 7, 9]

map : 改变

>>> maps = map(lambda x : x * 2 + 1, range(1, 10))
>>> list(maps)
[3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值