0
点赞
收藏
分享

微信扫一扫

闭包(closure)现象

def multiply_list():
    return [lambda x: i * x for i in range(4)]

print([m(100) for m in multiply_list()])

for m in multiply_list():
    print(m(100))

def multiply_gene():
    return (lambda x: i * x for i in range(4))

print([m(100) for m in multiply_gene()])

for m in multiply_list():
    print(m(100))

def multiply_yield():
    for i in range(4):
        yield lambda x: x * i

print([m(100) for m in multiply_yield()])

for m in multiply_yield():
    print(m(100))

from functools import partial
from operator import __mul__

def multiply():
    return [partial(__mul__, i) for i in range(4)]

print([m(100) for m in multiply()])

for m in multiply():
    print(m(100))

举报

相关推荐

0 条评论