不想学习能躺平 发表于 2022-3-25 10:29:05

小甲鱼 新手学python 闭包中疑惑求大佬解惑

嵌套函数中:
def funA():
        x = 880
        def funB():
                print(x)
        return funB

funA()
此处返回是函数funA的地址?
funA()()
返回是 880, 这里不懂,求大佬解答

傻眼貓咪 发表于 2022-3-25 10:35:31

funA() 返回 funB 也就是 funB 地址

注:
funB() 有括号执行函数,有返回值,则返回值
funB 没有括号,返回地址(对象)

funA() 有括号执行该函数,该函数返回 funB
funA()() 有两个括号,先从前面看(如上),funA() = funB,那么 funA()() = funB()

wiselin 发表于 2022-3-25 10:37:18

它的运行流程是这样子的:1、运行funA(),funB这里没有括号,表示的是funB这个变量,所以地址是funB的。2、你把return理解为“代替”,那就是funA()最终运行的结果就是funB,然后funA()()就等于funB(),运行funB()就打印了880这个数。

不想学习能躺平 发表于 2022-3-25 11:01:40

wiselin 发表于 2022-3-25 10:37
它的运行流程是这样子的:1、运行funA(),funB这里没有括号,表示的是funB这个变量,所以地址是funB的。2、 ...

感谢解答

不想学习能躺平 发表于 2022-3-25 11:02:45

傻眼貓咪 发表于 2022-3-25 10:35
funA() 返回 funB 也就是 funB 地址

注:


感谢答疑
页: [1]
查看完整版本: 小甲鱼 新手学python 闭包中疑惑求大佬解惑