Python:导入模块时未定义定义中的默认变量

时间:2018-08-26 09:45:57

标签: python import module

假设我有一个包含以下功能的模块foo.py

def bar(var=somedict):
    print(var)

在主程序main.py中,我导入此模块,定义变量somedict,然后运行函数bar

from foo import *
somedict = 'foobar'
bar()

想法是somedict作为默认参数传递而不必明确指定(我想在编写的实际程序中避免使用此参数)。

但是,Python抛出NameError: name 'somedict' is not defined。如何仍然导入模块并获得所需的“默认变量传递”?谢谢!

1 个答案:

答案 0 :(得分:0)

导入期间未定义

somedict。因此from foo import *会引发错误NameError: name 'somedict' is not defined

因此,如下修改foo.py

somedict={}
def bar(var=None):
    if var is None:
        var=somedict
    print(var)

现在,您应该能够以略有不同的形式进行尝试

import foo
foo.somedict = {'a':1}
foo.bar()