-3
mood = raw_input("Enter your mood: ").lower()
def setMood(mood):
mood = "awesome"
return mood
if mood != "awesome":
setMood(mood)
print "Yor mood is now %s!" % mood
else: print "You were awesome anyway!"
爲什麼這會返回原始輸入,而不是函數中被覆蓋的那個?如何解決這個問題?Python局部變量和函數
更新!
解決方案:
mood = raw_input("Enter your mood: ").lower()
def setMood(mood):
mood = "awesome"
return mood
if mood != "awesome":
mood = setMood(mood)
print "Yor mood is now %s!" % mood
else: print "You were awesome anyway!"
這沒有任何意義。 'setMood'裏面的'mood'是局部的,與第1行的'mood'不是同一個變量。僅僅因爲它們被命名爲相同的並不意味着它們是相同的。這個功能有什麼好處。它實際上並沒有做任何事情。只需將'if'後的'setMood'替換爲'mood =「awesome」'。 – putvande
您可以添加'global mood'來告訴Python'setMood()'裏面的'mood'指的是全局而不是本地變量。 –
其實id喜歡有一個覆蓋全局變量的函數。即使你是對的,並且首先回答了我的問題,我的問題依然存在 –