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

来源:8-8 Python的闭包

慕瓜3414965

2021-01-13 10:27

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())


写回答 关注

2回答

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

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

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

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

Python3 进阶教程(新版)

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

41910 学习 · 236 问题

查看课程

相似问题