python编程之美04.2

延迟绑定的闭包。
当你写下

一个列表里面包含5个函数,每个函数都有自己的封闭变量i,i乘以函数的参数得到:
0..2....4..6..8
结果却是如上图。
因为python的闭包是延迟绑定的。这意味着闭包中用到的变量值是在函数调用时才查找获得的。
可以在创建闭包时,使用默认参数值来绑定元素:
def create_multipliers():
    return [lambda x,i=i :i*x for i in range(5)]
或者使用functools.partial()函数:
from functools import partial 
from operator import mul
def create_multipliers():
    return [partial(mul,i) for i in range(5)]

全部评论

相关推荐

李橙子:结果虽不够理想,但过程本身已是宝贵的淬炼。能把学习机会放在薪酬之前,证明你目光长远。先踏实进去,用这段时间扎实学好Python后端,把公司项目吃透,你的价值会在下一份工作中完全体现。这个起点,值得。
点赞 评论 收藏
分享
牛客49732338...:同志们,已拿下
我的OC时间线
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务