2016-12-16 7 views
0

以下のコードについては疑問があります。グローバル変数の作成?

def spam(): 
    global eggs 
    eggs = 'spam' 
eggs ='global' 
spam() 
print(eggs) 

結果はspamです。 私の質問は以下の通りです: そのコードには2つのグローバル変数がありますか? なぜeggs = 'spam'しか実行されますが、eggs = 'global'は実行されないのですか? ありがとうございます。

答えて

3

グローバル変数が1つのみあり、そのコードにeggsという名前が付けられています。値には、最初に文字列 'global'で2回、関数内に文字列 'spam'で2回割り当てます。

私は、globalという用語は、Pythonの誤った名前であると思います。名前はモジュールにのみグローバルなので、他のモジュールからeggsにアクセスしようとすると、インポートしない限り存在しません。

+1

"インポートしていなければ存在しません" - そして、あなたが 'from'インポートを使用したとしても、自分の新しい変数をモジュールだけに使っていて、他に影響を与えることはありません。 – user2357112

1

eggs = 'global'を実行し、その値がeggs = 'spam'によって再び変更されます。

スパム機能がグローバルスコープにアクセスし、eggs'spam'に変更します。

0

卵に「グローバル」を割り当てた後で手順を実行したため、結果はスパムです。この手順では、卵に「スパム」が割り当てられます。

関連する問題