對於下面的代碼,我有一些疑問。創建全局變量?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
結果是spam
。 我的問題如下: 該代碼中有兩個全局變量嗎? 爲什麼它只執行eggs = 'spam'
而不是eggs = 'global'
? 預先感謝您。
對於下面的代碼,我有一些疑問。創建全局變量?
def spam():
global eggs
eggs = 'spam'
eggs ='global'
spam()
print(eggs)
結果是spam
。 我的問題如下: 該代碼中有兩個全局變量嗎? 爲什麼它只執行eggs = 'spam'
而不是eggs = 'global'
? 預先感謝您。
您只有一個全局變量,該代碼中名爲eggs
。您爲它分配一個值兩次,首先是字符串'global',再次是函數中的字符串'spam'。我認爲術語global
在Python中有點用詞不當。名稱只是模塊的全局名稱,所以如果您嘗試從另一個模塊訪問eggs
,那麼除非您導入它,否則它不會存在。
它確實執行eggs = 'global'
,其值再次被eggs = 'spam'
更改。
您的垃圾郵件功能訪問全球範圍並將eggs
更改爲'spam'
。
結果是垃圾郵件,因爲您在將'global'分配給egg之後運行了該過程。該程序將「垃圾郵件」分配給雞蛋。
「它不會存在,除非你導入它」 - 即使如此,如果你使用'from'導入,你將使用你自己的新變量global到你的模塊,並且賦值給一個變量wouldn'不會影響其他。 – user2357112