更改Python模块中的值

时间:2016-11-09 12:42:30

标签: python python-3.x import

我有一个简单的Python模块文件First.py

a = 50
b = [100,200,300]

我尝试将此模块导入另一个文件Test.py

import First
First.a = 420
First.b[0] = 420
print (First.a)

我的目的是更改First模块中的列表值。

当我在模块中打印值时脚本Test.py完成后,我发现值没有改变。

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (I
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import First
>>> dir(First)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', 'a', 'b']
>>> First.a
50
>>> First.b
[100, 200, 300]

我在这里缺少什么?有人可以指导我吗?

1 个答案:

答案 0 :(得分:1)

  

当我在模块中打印值时脚本Test.py完成后,我发现值没有改变。

如果您执行了python Test.py然后以交互方式启动了解释器并检查了值,当然,修改将不可见。 Python只会在找到First.py时加载import,执行它并使用a中的值初始化bFirst.py;以前的执行不会影响这一点。

如果您在交互式口译员中导入Test,那么导入First的更改将会反映出来:

Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import Test
420
>>> import First
>>> First.a
420
>>> First.b
[420, 200, 300]

在导入Test期间,First已加载并执行,然后修改了其值。当您重新导入python时,只需查看导入模块的表(sys.modules)并返回它而不执行其内容(并重新初始化ab