如何在Python中的模块之间共享变量

Gio*_*ldi 0 python python-2.7 python-3.x

我最近开始使用Python而不是Matlab,我有一个问题,答案可能是显而易见的,但我还不知道.

我在python中有以下模块名为shared_variables.py:

global a 
global b 

a = 2 
b = 3 
c = a
d = b
Run Code Online (Sandbox Code Playgroud)

在我的main.py脚本中,我做了以下事情:

import shared_variables

for i in range(1,4):
     shared_variables.a += 1
     shared_variables.b += 1
     print 'a= ',shared_variables.a
     print 'b= ',shared_variables.b
     print 'c= ',shared_variables.c
     print 'd= ',shared_variables.d
Run Code Online (Sandbox Code Playgroud)

输出如下:

 a=  3
 b=  4
 c=  2
 d=  3
 a=  4
 b=  5
 c=  2
 d=  3
 a=  5
 b=  6
 c=  2
 d=  3
Run Code Online (Sandbox Code Playgroud)

基本上c和d值不会在每次迭代时更新.我怎么解决这个问题?我问这个问题是因为我写了一个更长的程序,我需要在每个不同的迭代中需要更新的不同模块之间共享公共值.

Sim*_*ser 5

以下行设置变量的值一次(例如,指定ato 的当前值c):

a = 2 
b = 3 
c = a
d = b
Run Code Online (Sandbox Code Playgroud)

这并不意味着c每当a发生d变化时b变化也会发生变化.如果您希望变量更改值,则需要明确地为它们分配新值.

  • 注意OP使用就地添加; `a + = 1`和`b + = 1`.这通常会给人一种印象,即你实际上在改变价值; 改变整数. (3认同)