我想知道在多脚本 python 项目中使用全局变量的最佳方法是什么。我见过这个问题:在文件之间使用全局变量?- 虽然接受的答案有效,但解决方案似乎很笨拙。
请参阅下面的脚本集。只有 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"。有没有更好/更整洁的方法?
如果您的目标是使用 my_string
而不是 global_vars.my_string
,您可以像这样导入模块:
from global_vars import *
您应该能够直接使用my_string
。
我会去
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
最好的("显式优于隐式")使用
from module import name [as name] ...
但是不要指望能够修改其他模块看到的值(尽管你可以改变可变对象,如果你选择的话)。