我在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函数中读取已更改的变量。
答案 0 :(得分:3)
您有一个定义board
的Python模块。在您的控制台中,您有另一个名为board
的不同对象。从控制台输出board
时,您将获得该对象。当包含函数的模块打印board
时,它会打印该模块中定义的对象。
所以根本问题在于你有两件事你称之为board
。
我希望您导入模块如下:
from MyModule import *
完成后你无法区分两个board
对象。所以改为使用:
import MyModule
然后,您可以使用MyModule.board
来引用模块中定义的全局board
。
答案 1 :(得分:1)
将全局变量board
导入Python控制台一次后,它不会改变。尝试将该代码放入您的文件(作为打印语句),而不是在控制台中执行它,它应该可以工作。