更改另一个模块上的变量以获取功能

时间:2016-08-27 12:21:55

标签: python python-3.x variables import

我制作了两个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)

预期结果应为:

  

这应该出现

结果:

  

2 个答案:

答案 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)