Python函数在模块名称空间中替换它自己
这个问题在这里已经有了答案:
如果你没有global
语句,你将会创建一个名为_run_wsgi_app
的局部变量,然后将使用它,但是在全局名字空间中什么都不会改变。 使用global _run_wsgi_app
确保您将全局名称重新绑定到新函数。
请记住global
的基本用法:
def foo():
x = 2
def bar():
global x
x = 3
x = 1
print(x) # --> 1
foo()
print(x) # --> 1
bar()
print(x) # --> 3
你的例子是一样的,但不是直接使用name = ...
绑定名称,而是使用from ... import ... as name
。
另一种在没有global
情况下重新定义自身的方法是在模块对象所在的地方使用它。
def _run_wsgi_app(*args):
from werkzeug.test import run_wsgi_app as new_run_wsgi_app
import sys
sys.modules[__name__]._run_wsgi_app = new_run_wsgi_app
return new_run_wsgi_app(*args)
链接地址: http://www.djcxy.com/p/23899.html
上一篇: Python function replacing itself in the module namespace