引數(自變數)在python裡都是按引用傳遞,也就是傳遞的是變數位址,(變數就是位址,沒有型別,而關聯的物件是有型別的)
但是對於不可變變數,在函式內修改會申請新的記憶體空間,所以對外層函式沒有影響,
對於list變數,相當於操作同一塊記憶體,則會影響外層函式。
#!/usr/bin/python
# 可寫函式說明
def changeme( mylist ):
"修改傳入的列表"
print "函式內取值: ", mylist
return
# 呼叫changeme函式
mylist = [10,20,30];
changeme( mylist );
print "函式外取值: ", mylist
傳入函式的和在末尾新增新內容的物件用的是同乙個引用。故輸出結果如下:
函式內取值: [10, 20, 30, [1, 2, 3, 4]]
函式外取值: [10, 20, 30, [1, 2, 3, 4]]
好,看到這裡,自己親手測試一下,**:
def printme(age,str):
str = 'str changed!'
age=25
print age,str
return
str = 'ori str'
age = 23
printme(age,str)
print age,str
輸出結果:
25 str changed!
23 ori str
Python 函式引數的傳遞方式
引數的型別 python函式的不定引數主要有三種方式 傳入的引數將以元組形式存放在args中。1 傳入引數 1,2,3 def func args print args func 1,2,3 輸出 1,2,3 2 直接將乙個列表的所有元素當作不定引數傳入 1,2,3 def func args pr...
python引數傳遞方式
如果函式接收到的引數是乙個可變物件 類型別,列表,字典 就會改變物件的原始值。如果函式接收到的引數是乙個不可變物件,即基本資料型別 數值型,字串,布林 就不會改變物件的原始值。無論什麼引數,都是傳引用,只不過基本資料型別的賦值其實是重新構造並指向了乙個新的物件,記憶體位址不一樣,可以用id 來查詢記...
python引數傳遞方式
python中一切皆物件,函式中引數傳遞的是物件的引用。1在函式中改變變數指向的物件,即指向不同物件。當在函式中修改傳遞進來的變數指向另乙個物件時,實參的物件不會改變。def fun num,l,d num 123 l 1,2,3 d print inside num f,l s,d s num,l...