<p>它是旧的<code>func_closure</code>的新Python 3名称。</p>
<p><a href="http://docs.python.org/3.0/whatsnew/3.0.html" rel="nofollow">http://docs.python.org/3.0/whatsnew/3.0.html</a></p>
<blockquote>
<p>The function attributes named <code>func_X</code> have been renamed to use the <code>__X__</code> form, freeing up these names in the function attribute namespace for user-defined attributes. To wit, <code>func_closure</code>, <code>func_code</code>, <code>func_defaults</code>, <code>func_dict</code>, <code>func_doc</code>, <code>func_globals</code>, <code>func_name</code> were renamed to <code>__closure__</code>, <code>__code__</code>, <code>__defaults__</code>, <code>__dict__</code>, <code>__doc__</code>, <code>__globals__</code>, <code>__name__</code>, respectively.</p>
</blockquote>
<p>简而言之:</p>
<p><code>__closure__</code>是包含函数自由变量绑定的<code>None</code>或<code>tuple</code>细胞。</p>
<p>而且,它是不可写的。</p>
<p>引用:<a href="http://docs.python.org/ref/types.html" rel="nofollow">http://docs.python.org/ref/types.html</a></p>
<p><strong>示例</strong>Python<;3(因此我正在使用<code>func_closure</code>)</p>
<pre><code>def foo():
x = "I am used"
y = "I am free"
z = "I am free too"
def bar(x):
return x, y, z
return bar
c = foo().func_closure
print [i.cell_contents for i in c]
</code></pre>
<p>输出:</p>
<pre><code>>>>
['I am free', 'I am free too']
</code></pre>
<p>因为<code>foo</code>返回的是函数<code>bar</code>,它使用自己的值<code>x</code>,而不是<code>y</code>或<code>z</code>。所以,它们属于<code>__closure__</code>。</p>