我制作了两个py文件,其中 main.py 包含:
import module
module.Print("This should not appear.")
module.Silence = False
module.Print("This should appear.")
导入的模块是 module.py ,其中包含:
Silence = True
def Print(Input, Sil= Silence):
if Sil == False:
print(Input)
预期结果应为:
这应该出现
结果:
答案 0 :(得分:1)
问题在于,您已使用默认参数True定义了Print
函数(自Silent == True
导入此模块并创建函数时)。稍后将模块变量Silent
更改为False不会以任何方式影响此函数定义。它已经开始了。
你可以实现你想做的事情(在module.py
中):
Silence = [True]
def Print(Input, Sil= Silence):
if Sil[0] == False:
print(Input)
...
然后在module.Silence[0] = False
中设置main.py
。
[我假设这里的目标是调用函数而不用传入一个显式的Sil
参数。你当然可以直接传入一个明确的第二个参数,并让函数完全按照你期望的方式执行]
答案 1 :(得分:0)
我认为您正在寻找具有可动态更改的默认设置的功能。仅当Silence
函数调用中省略sil
参数时,才会使用全局Print()
。
def Print(input, sil=None):
if sil is None:
sil = Silence
if not sil:
print(input)