为了账号安全,请及时绑定邮箱和手机立即绑定

python初级问题3

python初级问题3

慕无忌0492270 2019-01-27 15:54:54
def count():    fs = []    for i in range(1, 4):        def f(i):            return lambda : i*i        fs.append(f(i))    return fsf1= count()print (f1())这段代码错在哪里
查看完整描述

1 回答

?
pardon110

TA贡献1038条经验 获得超227个赞

给你加了注释,希望能明白

def count():
    fs = []
    for i in range(1,4):
        def f(i):
            # 形成一个闭包,与swift的->,js的=>箭头函数,java8匿名函数概念一样
            # 返回一个无参的匿名函数,但该函数持有父层函数的自由变量当前i值
            return lambda : i*i
        fs.append(f(i)) # fs列表元的每个元素是一个绑定当前循环变量的函数
    return fs
f1=count()  
# f1仅仅只是列表,它的元素可以被调用
for fn in f1:
    print(fn())  # 1,4,9


查看完整回答
反对 回复 2019-01-27
  • 1 回答
  • 0 关注
  • 720 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信