Python - 在函数中更改全局变量

时间:2013-03-25 15:09:27

标签: python global-variables

我在python中有以下代码:

board = 0

def Board1():
    global board
    board = 1

def Board2():
    global board
    board = 2

def Board3(board):
    board = 3
    print board

def ReadBoard():
    print board

我认为功能Board1和Board2应该改变全局变量板的值。但是接下来会发生什么:当我调用board时它会返回0.如果我调用Board1,则全局电路板值不会改变,但如果我调用ReadBoard,它会给出Board1指定的值。 例如(在python控制台中):

>>> board  
0  
>>> Board1()  
>>> board  
0  
>>> ReadBoard()  
1  
>>> Board3(board)
3  
>>> board  
0  
>>> board = 4
>>> ReadBoard()
1  

我无法理解为什么我无法全局更改全局变量,为什么我在ReadBoard函数中读取已更改的变量。

2 个答案:

答案 0 :(得分:3)

您有一个定义board的Python模块。在您的控制台中,您有另一个名为board的不同对象。从控制台输出board时,您将获得该对象。当包含函数的模块打印board时,它会打印该模块中定义的对象。

所以根本问题在于你有两件事你称之为board

我希望您导入模块如下:

from MyModule import *

完成后你无法区分两个board对象。所以改为使用:

import MyModule

然后,您可以使用MyModule.board来引用模块中定义的全局board

答案 1 :(得分:1)

将全局变量board导入Python控制台一次后,它不会改变。尝试将该代码放入您的文件(作为打印语句),而不是在控制台中执行它,它应该可以工作。

相关问题