为了账号安全,请及时绑定邮箱和手机立即绑定
关注
慕沐9422798

为什么循环体放在函数参数里就不会变了?

def count():

    fs = []

    for i in range(1, 4):

        ①a=i

        def f(②a=i):

            return a*a

        fs.append(f)

    return fs

f1, f2, f3 = count()

print f1(), f2(), f3()

为什么a=i放在1处是输出999放在2处就是输出149了。i是循环体会变所以我想让他固定下来,所以用了a=i,但是放在外面就没有用,放在函数参数里就可以了?十分疑惑,求大神解答!

2019-07-23 源自:python进阶 2-9 309 浏览 1 回答

最佳回答

2019-07-23

这个函数类似于装饰器,在函数f1,f2,f3没有执行前,count()函数已经执行完了,若放在1处,count()函数执行完i和a已经变到3了,而且还没有传递到f()函数内部,之后执行f1(),f2(),f3()函数时,执行的f()函数都是a=3的结果,     若是放在2处,执行count()函数时,每次执行f()函数,a已经作为参数传递到f()函数内部了。   这样就会出现你这样的结果了

慕沐9422798 (提问者)

再问一下怎么才算将参数传递到函数内部呢?

#1 2019-07-25 回复

weibo_慕圣4053891 回复 慕沐9422798

引用该函数的时候,就会传递到函数内部了

#2 2019-07-30 回复

举报

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