擅长:python、mysql、java
<p>这是不可能的。如果您研究一下Python是如何存储局部变量的,就可以知道原因了。在</p>
<p>全局变量存储在一个哈希表中,哈希表的大小是动态的,名称被编译成散列键(Python的说法是,内部字符串)。这使得全局查找相对“慢”,但由于需要从其他编译单元(模块)中按名称查找全局项,因此需要:</p>
<pre><code># a.py
x = 3
# b.py
import a
a.x = 4 # b needs to know how to find the same x!
</code></pre>
<p>局部变量存储在固定大小的数组中,名称被编译成数组索引。在</p>
<p>当您查看字节码时,可以看到这一点,对于本地用户,它具有LOAD_FAST和STORE_FAST,但是对于全局变量,它有LOAD_GLOBAL和STORE_GLOBAL。它也会在不同的异常中泄露。当找不到全局变量时,会出现一个NameError,但是未定义的局部变量会被一个空槽检测到,并给出一个UnboundLocalError。在</p>
^{pr2}$
<p>因为数组是固定大小的,并且大小是在编译函数时计算的,所以不能创建任何其他局部变量。在</p>
<p>如果需要更多的“局部变量”,则需要将值存储为对象的命名属性或字典中;显然,这也会抵消速度优势。在</p>