2016-12-16 145 views
0

對於下面的代碼,我有一些疑問。創建全局變量?

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

結果是spam。 我的問題如下: 該代碼中有兩個全局變量嗎? 爲什麼它只執行eggs = 'spam'而不是eggs = 'global'? 預先感謝您。

回答

3

您只有一個全局變量,該代碼中名爲eggs。您爲它分配一個值兩次,首先是字符串'global',再次是函數中的字符串'spam'。我認爲術語global在Python中有點用詞不當。名稱只是模塊的全局名稱,所以如果您嘗試從另一個模塊訪問eggs,那麼除非您導入它,否則它不會存在。

+1

「它不會存在,除非你導入它」 - 即使如此,如果你使用'from'導入,你將使用你自己的新變量global到你的模塊,並且賦值給一個變量wouldn'不會影響其他。 – user2357112

1

它確實執行eggs = 'global',其值再次被eggs = 'spam'更改。

您的垃圾郵件功能訪問全球範圍並將eggs更改爲'spam'

0

結果是垃圾郵件,因爲您在將'global'分配給egg之後運行了該過程。該程序將「垃圾郵件」分配給雞蛋。