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

关于f()和g() 参数的问题

def count():
    fs = []
    for i in range(1, 4):
        def f():
            def g(j):
                return j*j
            return g
        r=f(i)
        fs.append(r)
        return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
#这样写报错

为什么j参数要在f()中引入,f()并没有用到j参数啊

正在回答

1 回答

你这样写不对哦,出错地方在r=f(i),因为这句话是直接把值传递给了r,而你在后面print时候是引用的函数。

其次,j其实相当于i=1,2,3的传入。

由于Python是动态语言,所以只有在真正执行的时候才会进行解释,那么如果在f里面直接传入了i,则在print 时候使用的是i=3,也就是最后的值。

你可以把这count看成整个大的函数,而f,g函数是其内部的函数调用,fs和i当作局部变量。那么在使用的时候就相当于将i的值传参给g(此处i是实时的传入进去,并且保存了)。所以当print时候python解释时调用了g这个函数,并且将j,分别用i=1,2,3替换了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

关于f()和g() 参数的问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号