如何导入模块中定义的变量?

时间:2019-01-29 23:33:14

标签: python

我已经在另一个要调用的模块中存储了一些数据,但是无法从该模块中检索变量值。我该怎么办?

module_with_data.py

def values():
    global x
    x = 1
values()

main.py

import module_with_data
x = 1 + x 

它应该输出的是2,但我无法完成这项工作。

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