2015-08-08 100 views
-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!" 
+0

這沒有任何意義。 'setMood'裏面的'mood'是局部的,與第1行的'mood'不是同一個變量。僅僅因爲它們被命名爲相同的並不意味着它們是相同的。這個功能有什麼好處。它實際上並沒有做任何事情。只需將'if'後的'setMood'替換爲'mood =「awesome」'。 – putvande

+0

您可以添加'global mood'來告訴Python'setMood()'裏面的'mood'指的是全局而不是本地變量。 –

+0

其實id喜歡有一個覆蓋全局變量的函數。即使你是對的,並且首先回答了我的問題,我的問題依然存在 –

回答

0

moodsetMood是全球性的,但它裏面的一個是本地的。有關更多信息,請參閱官方的python文檔。