Python交叉模块中的全局变量

时间:2017-01-17 21:11:39

标签: python django python-2.7 python-3.x

我有两个Python模块:

  • one.py;和
  • two.py

我想更改X中的two.py全局变量。脚本two.py正在运行。我运行one.py

之后

one.py

#!/usr/bin/env python

import two

def main():
 two.function("20")

if __name__=="__main__":
    main()

two.py

#!/usr/bin/env python

X="10"
def main():
 while True:
  function()
 time.sleep(0.25)

def function(input="00"):
 if(input!="00"):
      global X
      X=input
      print "change"

 print X
if __name__=="__main__":
  main()

控制台:

sudo python two.py

10
10
10
10

after I run one.py  but no change in two.py

1 个答案:

答案 0 :(得分:1)

  

在我运行one.py但在two.py

中没有变化之后

您正在做什么动态更改变量。它不会重写文件。

事实上,你可能想做什么。

myfile.txt

5

reader.py

with open('myfile.txt', 'r') as fp:
    nb = int(fp.read())
    print(nb)

writer.py

with open('myfile.txt', 'w') as fp:
    fp.write('6')

现在,如果您运行reader.py,则会输出5。然后,如果您运行writer.py,则不会输出任何内容,只需将myfile.txt的整个内容替换为6即可。然后,重新运行reader.py,它会输出6,因为文件的内容已更改。它的工作原理是,与您运行的程序不同,文件的内容不依赖于进程,而是“静态”。