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

这个代码是什么意思啊

def count():
    fs = []
    for i in range(1, 4):
        def f(i = i):
            return i * i
        fs.append(f)
    return fsf1, f2, f3 = count()print f1(), f2(), f3()

就是那个def f(i = i)没有懂它的含义

正在回答

2 回答

我的理解是这样子的。

def f(i = i) 中第一个i是形式参数,第二个i是取值(1,4)的值。很绕啊,为了方便理解,也可以这样写:

def f(x = i)
    return x*x

在这里每一次循环,分别相当于x=1, x=2, x=3(值引用)。

好了,楼主的问题就回答完了。

 我想强调的是,f(x=i) 在运算过程中定义了新的变量x,每次计算返回f(x)=x*x,当打印f1, f2, f3时分别带入

1,2,3得到1,4,9. 这里往往容易错误的把f(i=i)写成f(),得到的f1,f2,f3,打印结果的时候,循环变量i已经变成3,最终只能得到结果9,9,9.



1 回复 有任何疑惑可以回复我~
#1

迟迟清梦 提问者

嗷!谢谢谢谢,我懂了!!!!!
2019-12-29 回复 有任何疑惑可以回复我~

我是了一下,和 (i=i) 没啥关系
和append(f())   少了里面的括号有关吧

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

举报

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

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

进入课程

这个代码是什么意思啊

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信