Python的傳值和傳值

2021-10-20 09:40:57 字數 1217 閱讀 7445

變數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...