擅长:python、mysql、java
<p>你没有。函数的局部变量只在该函数运行时存在;因此一旦main返回,它的x就不存在了。这还与这样一个事实有关:对函数的单独调用会得到一个单独的变量。你知道吗</p>
<p>您所描述的有点像在C中读取静态变量的值。与静态变量的区别在于它们独立于调用;它们仍然存在,这使得大多数使用它们的函数不可重入。有时<a href="http://www.ferg.org/projects/python_gotchas.html#contents_item_6" rel="nofollow">adding a default argument with a mutable value</a>会在Python中模拟这种情况,但也有同样的缺点。你知道吗</p>
<p>在CPython中,您实际上可以通过检查纯Python函数的代码对象来找出它的局部变量是什么,但是它们的值只存在于调用本身中,通常在调用堆栈中。你知道吗</p>
<pre><code>def func():
x=2
import dis
print func.__code__.co_varnames
dis.disassemble(func.__code__)
</code></pre>
<p>收益率:</p>
<pre><code>('x',)
2 0 LOAD_CONST 1 (2)
3 STORE_FAST 0 (x)
6 LOAD_CONST 0 (None)
9 RETURN_VALUE
</code></pre>
<p>所以x实际上是局部变量0。你知道吗</p>
<p>我建议在调试器中查找有关调用堆栈检查的详细信息。你知道吗</p>