locals 与 globals 之间有另外一个重要的区别,您应该在它困扰您之前就了解它。它无论如何都会困扰您的,但至少您还会记得曾经学习过它。
例 8.12. locals 是只读的,globals 不是
<span class="pykeyword"> def</span> foo(arg): x = 1 <span class="pykeyword">print</span> locals() <a target=_blank name="dialect.locals.4.1" style="color: rgb(51, 102, 153);"></a><img border="0" alt="1" src="http://woodpecker.org.cn/diveintopython/images/callouts/1.png" width="12" height="12" style="border: none; max-width: 100%;" /> locals()[<span class="pystring">"x"</span>] = 2 <a target=_blank name="dialect.locals.4.2" style="color: rgb(51, 102, 153);"></a><img border="0" alt="2" src="http://woodpecker.org.cn/diveintopython/images/callouts/2.png" width="12" height="12" style="border: none; max-width: 100%;" /> <span class="pykeyword">print</span> <span class="pystring">"x="</span>,x <a target=_blank name="dialect.locals.4.3" style="color: rgb(51, 102, 153);"></a><img border="0" alt="3" src="http://woodpecker.org.cn/diveintopython/images/callouts/3.png" width="12" height="12" style="border: none; max-width: 100%;" /> z = 7 <span class="pykeyword">print</span> <span class="pystring">"z="</span>,z foo(3) globals()[<span class="pystring">"z"</span>] = 8 <a target=_blank name="dialect.locals.4.4" style="color: rgb(51, 102, 153);"></a><img border="0" alt="4" src="http://woodpecker.org.cn/diveintopython/images/callouts/4.png" width="12" height="12" style="border: none; max-width: 100%;" /><span class="pykeyword"> print</span> <span class="pystring">"z="</span>,z <a target=_blank name="dialect.locals.4.5" style="color: rgb(51, 102, 153);"></a><img border="0" alt="5" src="http://woodpecker.org.cn/diveintopython/images/callouts/5.png" width="12" height="12" style="border: none; max-width: 100%;" />