7

いくつかの関数でいくつかのグローバル変数を宣言し、それらの関数を含むファイルを別の関数にインポートしようとしています。ただし、2 番目のファイルで関数を実行してもグローバル変数が作成されないことがわかりました。同じ名前の別の変数を作成しようとしましたが、変数を出力すると、グローバル値ではなく、2 番目のファイルの値が出力されます

globals.py

def default():
    global value
    value = 1

main.py

from globals import *
value = 0
def main():
    default()
    print value

if __name__=='__main__':
    main()

これは0を出力value = 0します。メインにない場合、プログラムはエラーになります(値が定義されていません)。

関数の外側でi を宣言するvalueと、で設定された値ではなく、 global の値を取りますglobals.pymain.pyvaluedefault()

valuePythonでグローバル変数になる適切な方法は何ですか?

4

1 に答える 1

5

Python のグローバルは、そのモジュールに対してのみグローバルです。プロセス全体にグローバルな変更可能な名前はありません。

これであなたが望むことを達成することができます:

globals.py:

value = 0
def default():
    global value
    value = 1

main.py:

import globals
def main():
    globals.default()
    print globals.value

if __name__ == "__main__":
    main()

ただし、このようなグローバルが問題を解決する最善の方法であるかどうかはわかりません。

于 2013-03-24T05:17:07.207 に答える