关于闭包函数的问题,求教
函数闭包问题,请教大神,为什么多次执行函数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
因为var代表func里面的func1,而这个时候,func1里面没有打印func的语句,
只有打印func1的语句,所以不会打印func1. 一开始已经执行过 func 并将 func 函数的返回值 func1 函数赋值给 var ,之后调用 var 就是在单纯调用 func1,不会调用 func 。 第一次运行,fun1 确实运行了,切结果是返回的一个fun2.后面在运行,都属于fun2在运行,和1没关系
页:
[1]