擅长:python、mysql、java
<p>如果你觉得自己疯了,那么看看<a href="http://www.voidspace.org.uk/python/articles/code_blocks.shtml" rel="nofollow">this article about dynamic scoping</a>。在</p>
<p>基本上,其思想是修改函数的字节码(使用<code>byteplay</code>模块),并将所有严格意义上不属于局部范围的引用替换为具有局部作用域的引用。要说明基本概念(在Python伪代码中):</p>
<pre><code>code = byteplay.extractcode(function)
newbytecode = []
for opcode, arg in code.code:
if opcode in (NONLOCAL_CODES):
opcode = LOCAL_EQUIVALENT
newbytecode.append((opcode, arg))
code.code = newbytecode
return code.to_code()
</code></pre>
<p>比这稍微复杂一些,但是这篇文章提供了一些很好的信息。在</p>
<p>他还建议不要在生产中使用它。:天</p>