以下のコードについては疑問があります。グローバル変数の作成?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
結果はspam
です。 私の質問は以下の通りです: そのコードには2つのグローバル変数がありますか? なぜeggs = 'spam'
しか実行されますが、eggs = 'global'
は実行されないのですか? ありがとうございます。
以下のコードについては疑問があります。グローバル変数の作成?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
結果はspam
です。 私の質問は以下の通りです: そのコードには2つのグローバル変数がありますか? なぜeggs = 'spam'
しか実行されますが、eggs = 'global'
は実行されないのですか? ありがとうございます。
グローバル変数が1つのみあり、そのコードにeggs
という名前が付けられています。値には、最初に文字列 'global'で2回、関数内に文字列 'spam'で2回割り当てます。
私は、global
という用語は、Pythonの誤った名前であると思います。名前はモジュールにのみグローバルなので、他のモジュールからeggs
にアクセスしようとすると、インポートしない限り存在しません。
eggs = 'global'
を実行し、その値がeggs = 'spam'
によって再び変更されます。
スパム機能がグローバルスコープにアクセスし、eggs
を'spam'
に変更します。
卵に「グローバル」を割り当てた後で手順を実行したため、結果はスパムです。この手順では、卵に「スパム」が割り当てられます。
"インポートしていなければ存在しません" - そして、あなたが 'from'インポートを使用したとしても、自分の新しい変数をモジュールだけに使っていて、他に影響を与えることはありません。 – user2357112