Discuss / Python / Python 好迷啊

Python 好迷啊

Topic source

小小事界

#1 Created at ... [Delete] [Delete and Lock User]

请问大家为何加了 j=i,结果还是9 9 9 ?i 在每次迭代中是在变的,j 为何也会变呢?难道 j 的作用域不是在一个迭代内吗?

def count():

    fs = []

    for i in range(1, 4):

        j = i

        def f():

            return j**2

        fs.append(f)

    return fs

f1, f2, f3 = count()

print(f1(), f2(), f3()) # 9 9 9

(1)内层函数f()并没引用外层函数的参数i、j,故f()的结果与i、j无关

(2)i和j的值在这句”f1, f2, f3 = count()“执行后,就被固定为3了,即在函数f1(), f2(), f3()调用前就成型了


  • 1

Reply