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

为什么只是移动一行的位置结果就不一样

这是正确的代码:

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

然后我就把j=i移动一下位置,无论是前移还是后移:

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

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

结果都不正确,这是为什么呢?或者说,为什么加一个j=i就能对了呢?

正在回答

1 回答

你第一个也不对啊

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

慕码人9323894

第一个哪错了 大佬求解答
2019-10-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么只是移动一行的位置结果就不一样

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