Pythonのグローバル変数

高洛峰
高洛峰オリジナル
2016-10-19 16:41:101212ブラウズ

グローバル変数はパラメーター受け渡しの精神に準拠していないため、定数を定義しない限り、ほとんど使用しません。今日、同僚がグローバル変数について質問し、それを行う方法があることを発見しました。

プログラムは大体こんな感じです:

CONSTANT = 0
def modifyConstant() :
        print CONSTANT
        CONSTANT += 1
        return
if __name__ == '__main__' :
        modifyConstant()
        print CONSTANT

実行結果は以下の通りです:

UnboundLocalError: local variable 'CONSTANT' Referenced before assign

関数modifyConstant内でグローバル変数がローカル変数になっているようです。グローバル変数が有効になっていないようです?

いくつかの修正を加えました:

CONSTANT = 0
def modifyConstant() :
        print CONSTANT
        #CONSTANT += 1
        return
if __name__ == '__main__' :
        modifyConstant()
        print CONSTANT

は関数内でグローバル変数にアクセスできるようです。

問題は、変数 CONSTANT が関数内で変更されているため、Python は CONSTANT をローカル変数と見なし、print CONSTANT が CONSTANT += 1 より前にあるため、当然このエラーが発生することです。

それでは、関数内のグローバル変数にアクセスして変更するにはどうすればよいでしょうか?変数を変更するには、キーワード global を使用する必要があります (PHP と少し似ています):

CONSTANT = 0
def modifyConstant() :
        global CONSTANT
        print CONSTANT
        CONSTANT += 1
        return
if __name__ == '__main__' :
        modifyConstant()
        print CONSTANT


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。