在 Python 中的文件之间共享全局变量的最佳方式



我想知道在多脚本 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_stringmy_int

最好的("显式优于隐式")使用

from module import name [as name] ...

但是不要指望能够修改其他模块看到的值(尽管你可以改变可变对象,如果你选择的话)。

相关内容

  • 没有找到相关文章