从入门到富豪 发表于 2020-5-7 19:23:51

关于闭包函数的问题,求教

函数闭包问题,请教大神,为什么多次执行函数var,从第二次开始,不在打印外部函数的func?

mylist =

def func(obj):
    print("func", obj)
    def func1():
      obj += 1
      print('func1',obj)
    return func1

var = func(mylist)

var(5)      
print(';;;')
var()               #第一次执行 ,打印了func和func1

#####输出如下:
func
func1
;;;
func1 #第二次执行,只打印了func1,没有打印func

qiuyouzhi 发表于 2020-5-7 19:25:47

因为var代表func里面的func1,而这个时候,func1里面没有打印func的语句,
只有打印func1的语句,所以不会打印func1.

zltzlt 发表于 2020-5-7 19:42:23

一开始已经执行过 func 并将 func 函数的返回值 func1 函数赋值给 var ,之后调用 var 就是在单纯调用 func1,不会调用 func 。

Stubborn 发表于 2020-5-7 21:51:09

第一次运行,fun1 确实运行了,切结果是返回的一个fun2.后面在运行,都属于fun2在运行,和1没关系
页: [1]
查看完整版本: 关于闭包函数的问题,求教