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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务