问答详情
源自:8-8 Python的闭包

python 闭包 在循环中定义函数,函数变量会直接引用循环变量

python 闭包 在循环中定义函数,函数变量会直接引用循环变量(下面函数使用:def f(j):  和  def f(j=i): 都能正常执行,为什么j 默认会等于i 呢?)

def count():

    fs=[]

    for i in range(1,4):

        #print('i=',i)

        #def f(j):

        def f(j=i):

            #print('j',j)

            def g():

                return j*j

            return g

        r=f(i)

        fs.append(r)

    return fs

f1,f2,f3=count()

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


提问者:慕瓜3414965 2021-01-13 10:27

个回答

  • 粗实而夜雨
    2021-01-23 10:34:47

    你看下r=f(i)和程序中的f(j)函数,这样你会发现j是形参,i就相当于传入的参数,所以就是相等的了

  • 廖玉文_给力印
    2021-01-18 10:24:39

    抱歉,不明白题目意思,请明确一下。