更改对外部函数的引用
Changing reference to an outer function
def foo():
print(True)
def bar():
foo()
def baz():
def foo():
print(False)
foo()
bar()
baz()
输出:
False
True
我需要让它输出:
False
False
通过 bar
调用 baz
内部定义的 foo
,而不触及 baz
本身之外的任何内容。
为此,您需要在全局范围内覆盖 foo
的定义。只需使用 global
关键字:
def foo():
print(True)
def bar():
foo()
def baz():
global foo
old_foo = foo # if you want to backup the original definition of foo (optional)
def foo():
print(False)
foo()
bar()
foo = old_foo # revert foo to its original state (optional)
baz()
输出:
False
False
def foo():
print(True)
def bar():
foo()
def baz():
def foo():
print(False)
foo()
bar()
baz()
输出:
False
True
我需要让它输出:
False
False
通过 bar
调用 baz
内部定义的 foo
,而不触及 baz
本身之外的任何内容。
为此,您需要在全局范围内覆盖 foo
的定义。只需使用 global
关键字:
def foo():
print(True)
def bar():
foo()
def baz():
global foo
old_foo = foo # if you want to backup the original definition of foo (optional)
def foo():
print(False)
foo()
bar()
foo = old_foo # revert foo to its original state (optional)
baz()
输出:
False
False