关于一道面试题的思考

def testFun():
    return [lambda x:i*x for i in range(4)]

for i in testFun():
    print(i(2))

  输出:

6
6
6
6

最开始百思不得其解。然后恰巧在知乎上看到这个例子。

这篇文章又引出了闭包的概念。下面这篇链接就是介绍闭包的。我从这篇链接得到了灵感。
后面会分析到,的确与闭包有关系。
 
第一个链接,即知乎上的部分解释我个人是不认同的。
实际上理解这段代码及其输出,我认为的关键点有两个。一个是理解闭包,一个是理解函数的定义阶段与函数的调用阶段这两个阶段分别干了什么。
 

猜你喜欢

转载自www.cnblogs.com/654321cc/p/9027180.html