Discuss / Python / 看看理解对不对...

看看理解对不对...

Topic source

拜德沃夫

#1 Created at ... [Delete] [Delete and Lock User]

作为小白求确认...f1,f2,f3作为三个不同函数能理解,对于都输出9不知道我这样的理解对不对: 闭包的话就是里面循环管循环自己运行掉了,然后函数的话是等调用的时候在执行,这时候循环已经结束(或者说都被覆盖掉了?),i=3,所以结果是9,9,9

任性Monster

#2 Created at ... [Delete] [Delete and Lock User]

任性Monster

#3 Created at ... [Delete] [Delete and Lock User]

只要最后不执行最后count的返回值中只包含着关于f函数的指针 指针不会执行

jhgyz

#4 Created at ... [Delete] [Delete and Lock User]

def count(): fs=[] for i in range(1,4): def f(): print('--------') return i*i fs.append(f) print('=======') print('++++++') return fs

f1,f2,f3=count() #从输出进行反推可以知道,=count()时已经将for循环执行完了,输出3个"=======",1个"++++++"

xx=f1() #f1()时才去调用f()函数,此时i=3,所以结果是9

print(xx)


  • 1

Reply