2

私は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は、グローバル変数ボードの値を変更する必要があると思います。ただし、ボードを呼び出すと0が返されます。Board1を呼び出すと、グローバルボード値は変更されませんが、ReadBoardを呼び出すと、Board1が割り当てた値が返されます。例(Pythonコンソールの場合):

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

グローバル変数をグローバルに変更できない理由と、変更された変数をReadBoard関数で読み取る理由がわかりませんでした。

4

2 に答える 2

3

を定義するPythonモジュールがありますboard。コンソールには、名前を付けた別の別個のオブジェクトがありますboardboardコンソールから出力すると、そのオブジェクトを取得します。関数を含むモジュールがboard印刷されると、そのモジュールで定義されたオブジェクトが印刷されます。

したがって、根本的な問題は、あなたが呼ぶ2つのものがあるということですboard

次のようにモジュールをインポートしたと思います。

from MyModule import *

boardそうすると、2つのオブジェクトを区別する方法がなくなります。したがって、代わりに次を使用します。

import MyModule

次に、モジュールで定義されMyModule.boardたグローバルを参照するために使用できます。board

于 2013-03-25T15:19:23.063 に答える
1

グローバル変数をPythonコンソールに一度インポートした後はboard、変更されません。コンソールで実行するのではなく、そのコードを(printステートメントとして)ファイルに入れてみてください。動作するはずです。

于 2013-03-25T15:14:46.443 に答える