首先你要明白,Python的函式傳遞方式是賦值,而賦值是透過建立變數與物件的關聯實現的。
對於你的程式碼:
執行 d = 2時,你在__main__裡建立了d,並讓它指向2這個整型物件。
執行函式add(d)過程中:
d被傳遞給add()函式後,在函式內部,num也指向了__main__中的2
但執行num = num + 10之後,新建了物件12,並讓num指向了這個新物件——12。
如果你明白函式中的區域性變數與__main__中變數的區別,那麼很顯然,在__main__中,d仍在指著2這個物件,它沒有改變。因此,你列印d時得到了2。
如果你想讓輸出為12,最簡潔的辦法是:
在函式add()裡增加return num
呼叫函式時使用d = add(d)
程式碼如下:
def add(num):
num += 10
return num
d = 2
d = add(d)
print d
首先你要明白,Python的函式傳遞方式是賦值,而賦值是透過建立變數與物件的關聯實現的。
對於你的程式碼:
執行 d = 2時,你在__main__裡建立了d,並讓它指向2這個整型物件。
執行函式add(d)過程中:
d被傳遞給add()函式後,在函式內部,num也指向了__main__中的2
但執行num = num + 10之後,新建了物件12,並讓num指向了這個新物件——12。
如果你明白函式中的區域性變數與__main__中變數的區別,那麼很顯然,在__main__中,d仍在指著2這個物件,它沒有改變。因此,你列印d時得到了2。
如果你想讓輸出為12,最簡潔的辦法是:
在函式add()裡增加return num
呼叫函式時使用d = add(d)
程式碼如下:
def add(num):
num += 10
return num
d = 2
d = add(d)
print d