【发布时间】:2021-04-28 10:48:49
【问题描述】:
def foo():
print(True)
def bar():
foo()
def baz():
def foo():
print(False)
foo()
bar()
baz()
输出:
False
True
我需要让它输出:
False
False
通过在baz 内部定义bar 调用foo,而不触及baz 本身之外的任何内容。
【问题讨论】:
-
你为什么要这样做?
-
@forgetso,正在测试。我需要模拟 bar 对 foo 的全局依赖。
-
啊 - 你可以在 pytest 中 monkeypatch
-
Python 没有动态作用域,python有词法作用域。几乎可以肯定,您应该使用另一种方法
-
@GlebKisenkov 考虑built-in mocking lib
标签: python scope metaprogramming