(Note)Python 闭包 Closure

记录一个由Python闭包(closure)引发的问题

问题如下图所示:

(Note)Python 闭包 Closure_第1张图片

首先是闭包(closure)的定义:

在函数中嵌套另一个函数,如果内部函数调用了外部函数的变量,则可能产生闭包(closure)

如上图所示,在函数multiply中,嵌套返回了Lambda函数(匿名函数) ,因此产生了闭包现象。

然而,函数multiply的执行结果表明,在返回列表内的四个Lambda函数中,i看起来均为3。

这是因为:

函数multiply返回的4个子函数并没有立刻执行,而是直到调用m(100)时才开始执行,此时i的值为3,因此返回的数值均为3*100。

Reference:

Python闭包(Closure)详解 - 知乎

你可能感兴趣的:(Python,leetcode,算法,python)