Python全局变量未按预期工作

时间:2011-04-25 22:28:16

标签: python

我刚开始使用Python并尝试不同的解决方案。我正在处理全局变量,但我遇到了一些事情,但不知道为什么它正在做它正在做的事情。

首先,我有两个模块:test1和test2。 test1如下:

import test2
num = 0
def start():
    global num
    num = num + 5
    print 'Starting:'
    print num
    test2.add()
    print 'Step 1:'
    print num
    test2.add()
    print 'Step 2:'
    print num

test2就是这样:

import test1
def add():
    test1.num = test1.num + 20

当我运行test1.start()时,输出为:

  

开始:
  5
  第1步:
  25个
  第2步:
  45

为什么test2不需要全局声明来修改test1中的变量? test1中的第5行需要它在第4行,但如果我删除它们仍然有效(0,20,40)。我只是想弄清楚为什么它不像我预期的那样工作。

感谢。

2 个答案:

答案 0 :(得分:4)

global声明不是修改名称,而是重新绑定。由于您通过其模块访问该名称,因此您正在修改模块

答案 1 :(得分:0)

从test2的角度来看,test1.num是属于模块test1的变量。

global关键字仅指明该变量的范围是模块级别(即非本地)。