我想知道在多脚本python项目中使用全局变量的最佳方法是什么。 我已经看到了这个问题:Using global variables between files? - 虽然接受的答案有效,但解决方案似乎很笨拙。
请参阅以下脚本集。只有main.py才被直接调用;其余的都是进口的。
首先,我在一个单独的文件中声明了我的全局变量:
#global_vars.py
my_string = "hello world"
main.py
使用自定义函数打印字符串的值,更改全局变量的值,然后打印新值
#main.py
import global_vars
import do_things_module
#Print the instantiated value of the global string
do_things_module.my_function()
#Change the global variable globally
global_vars.my_string = "goodbye"
#Print the new value of the global string
do_things_module.my_function()
do_things_module.py
包含我们的自定义打印功能,并直接从全局
#do_things_module.py
import global_vars
def my_function():
print(global_vars.my_string)
必须继续引用global_vars.my_string
而不仅仅是my_string
来确保我总是读/写全局范围变量似乎是冗长的而不是非常'pythonic'。有更好/更整洁的方式吗?
答案 0 :(得分:0)
如果您的目标是使用my_string
而不是global_vars.my_string
,则可以像这样导入模块:
from global_vars import *
您应该可以直接使用my_string
。
答案 1 :(得分:0)
我会选择
import global_vars as g
然后,您可以在代码中将my_string
模块中的global_vars
称为g.my_string
。
它没有占用大量空间,但仍然很明显,my_string
来自global_vars
且命名空间未被污染
如果您当前模块中只需要几个global_vars
变量,则只能导入它们
from global_vars import my_string, my_int
并将其引用为my_string
和my_int
答案 2 :(得分:0)
最重要的是("显式优于隐式")使用
from module import name [as name] ...
但是不要期望能够修改其他模块看到的值(尽管你可以改变可变对象,如果你选择的话)。