變數a傳入函式f之後,函式內部對a進行的操作會不會影響到函式外部的a?
def
f(a)
: a[1]
=99a=[
1,2,
3]f(a)
print
(a)#[1, 99, 3] 有影響
def
f(a)
: a=[1
]a=[1
,2,3
]f(a)
print
(a)#[1, 2, 3] 無影響
classa:
def__init__
(self,v)
: self.v=v
deff
(a:a)
: a.v=
10a=a(0)
f(a)
print
(a.v)
#10 有影響
classa:
def__init__
(self,v)
: self.v=v
deff
(a:a)
: a=a(10)
a=a(0)
f(a)
print
(a.v)
#0 無影響
def
f(a:
int)
: a+=1a=
0f(a)
print
(a)#0 無影響
參考其他大佬的總結:
如果函式收到的是乙個可變物件(比如字典/列表/物件),就能修改資料的原始值——相當於通過「傳引用」來傳遞物件。如果函式收到的是乙個不可變物件(比如數字、字元或者元組),就不能 直接修改原始物件——相當於通過「傳值」來傳遞物件。
另外當進行修改時,只能對資料進行區域性修改。不能完全覆蓋。如,code.2/4
classa:
def__init__
(self,v)
: self.v=v
a=a(1)
b=ab=a(2)
#此處僅是b被重新賦值,而不是a被完全覆蓋為a(2)
print
(a.v,b.v)
#1 2
ref傳值和out傳值
目錄 ref,out區別 out傳值 ref傳值 1.定義方法時,引數用out修飾,在呼叫該方法的時候,引數也需要用out修飾。2.在定義方法時,必須給引數賦初值。2.在呼叫該方法時,可以賦初值,也可以不賦初值。4.out這個單詞是 出去 的意思,所以引數加out就是將方法裡面賦的那個值傳到外面去了...
傳值 傳值引用
首先對傳值和傳引用要有個基本的概念 傳值 傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。傳引用 傳遞的是引用的副本,共用乙個記憶體,會影響到呼叫方。此時,形參和實參指向同乙個記憶體位址。對引用副本本身 物件位址 的修改,如設定為null,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...
傳位址和傳值
using system using system.data using system.configuration using system.collections using system.web using system.web.security using system.web.ui usin...