Python - 覆盖导入文件中的常量并在导入函数中使用

hor*_*_vr 0 python python-import

我有一个模块,其中定义了一些常量,并在多个函数中使用。我如何从我的主文件中覆盖它们的值?

说这是模块,test_import.py

MY_CONST = 1

def my_func(var = MY_CONST):
    print(var)
Run Code Online (Sandbox Code Playgroud)

这是我的main.py文件:

import test_import

MY_CONST = 2
test_import.MY_CONST = 3

test_import.my_func()
Run Code Online (Sandbox Code Playgroud)

这段代码仍然打印“1”。我希望它打印一些其他值(显然,在调用时不传递值my_func()

che*_*ner 5

默认值在函数定义时与函数本身一起存储;当不带参数调用函数时,不会在全局范围内查找它。

>>> test_import.my_func.__defaults__[0]
1
Run Code Online (Sandbox Code Playgroud)

如果您确实愿意,可以指定要使用的新默认值。

>>> test_import.my_func.__defaults__[0] = 9
>>> test_import.my_func()
9
Run Code Online (Sandbox Code Playgroud)