我已经在另一个要调用的模块中存储了一些数据,但是无法从该模块中检索变量值。我该怎么办?
module_with_data.py
:
def values():
global x
x = 1
values()
main.py
:
import module_with_data
x = 1 + x
它应该输出的是2,但我无法完成这项工作。
答案 0 :(得分:1)
module_with_data.py
x = 1
main.py
from module_with_data import x
x = x + 1
print(x)
看起来您想要这样的简洁语法,但是,请谨慎使用模块中的裸变量,就像它们是全局变量一样,尤其是在更改其值时。对于简单的代码,这很好,但是一旦代码库变大,我们就会忘记一切。
答案 1 :(得分:1)
要更改的x
在分配值之前不存在,但是由于在函数内部分配了值,因此将在该函数的范围内创建该值,并且在该函数外部将不可用
如果在您的情况下更有意义,则可以在函数内为全局x
分配一个值,但是您必须将x
声明为global
:
def values()
global x
x = 1
values()
或者,不要在函数中声明它,而只是将赋值放在模块主体中:
x = 1
第二,您要导入整个模块,但这意味着您只有在为其命名空间时才能访问其内容:
import module_with_data
module_with_data.x = 1 + module_with_data.x
或者,您可以将其添加到导入脚本的命名空间中:
from module_with_data import x
x = 1 + x