擅长:python、mysql、java
<p>会发生什么,一步一步:</p>
<ol>
<li>您正在用<code>x = 2</code>调用<code>outside</code>函数。你知道吗</li>
<li><code>outside</code>返回在<code>x</code>为<code>2</code>的上下文中定义的函数<code>inside</code>。你知道吗</li>
<li>所以现在,<code>a</code>包含函数:<code>def inside(y): return 2 ** y</code></li>
<li>您正在调用<code>a(10)</code>,也就是说,回想步骤3,<code>inside(10)</code>。你知道吗</li>
</ol>
<p>这个特性被称为<a href="http://en.wikipedia.org/wiki/First-class_function" rel="nofollow"><em>Functions as First-Class Objects</em></a>——它基本上意味着函数就像类实例一样,可以保存状态,可以在变量和参数中传递,就像其他任何东西一样。请注意以下示例:</p>
<pre><code>>>> def x():
... pass
...
>>> x
<function x at 0x02F91A30> # < function's address
>>> type(x)
<type 'function'>
>>>
>>> y = x
>>> type(y)
<type 'function'>
>>> y
<function x at 0x02F91A30> # < the same address
>>>
</code></pre>