2014-04-25 31 views
0
n=0 
def add(n): 
    print n 
    n+=1 
    print n 
    return n 

無論我對「n」它返回爲0。 「n + = 1」之後的「打印n」是「n = 1」。 「返回n」以某種方式將「n」轉換回「0」,還是與全局「n = 0」有關,無論如何我都無法改變?我不明白髮生了什麼事。如何創建一個可以在函數中更改的變量(從一個函數到另一個函數...)。n + = 1返回0 python函數不能更改變量

+0

'加(0)'*將*回報'1',但如果你不打印返回值或別不分配給任何地方,全球'n'不受影響。 –

回答

4

nadd()一個本地變量,因此它是不一樣的變量作爲全球n。這兩者(非常故意地)沒有連接。

如果你想改變世界,你有兩個選擇:

  1. add()的返回值重新分配回全局n

    n = add(n) 
    
  2. 直接通過標記改變全球nadd作爲一個全球性的。您add()功能並不需要在這種情況下使用的參數:

    def add(): 
        global n 
        n += 1