python之函式引數傳遞

2021-07-22 21:58:26 字數 580 閱讀 4141

例一:

a = 1

def fun(a):

a = 2

fun(a)

print a # 1

例二

a = 

def fun(a):

fun(a)

print a # [1]

所有的變數都可以理解成是記憶體中乙個物件的「引用」。

型別是屬於物件的,而不是變數。

物件有兩種,「可更改」(mutable)與「不可更改」(immutable)物件。

在python中,strings, tuples, 和numbers是不可更改的物件,而list,dict等則是可以修改的物件。

當乙個引用傳遞給函式的時候,函式自動複製乙份引用,這個函式裡的引用和外邊的引用沒有關係.所以第乙個例子裡函式把引用指向了乙個不可變物件,當函式返回的時候,外面的引用沒有變化.而第二個例子就不一樣了,函式內的引用指向的是可變物件,對它的操作就和定位了指標位址一樣,在記憶體裡進行修改.

總結:當物件不可變時,引數傳遞實際上是傳值;當物件可變試,引數傳遞實際上是傳引用。

python函式引數傳遞

例子1 def f x x 0 10 a 1,2 f a a 0 輸出 記憶體空間 命名空間 pos1 list 1,2 a pos1 x pos1 對列表a應用這個函式,python會先讓x指向a所在的記憶體。由於x和a共享同乙個物件,修改x 0 會讓a的值相應改變。例子2 def mod x x...

python 引數傳遞 Python 引數傳遞

python中的變數 乙個變數是區域性還是全域性,在編譯函式的時候就已經決定,因此讀變數值的時候也不會逐層向外查詢。變數是全域性還是局域,根據如下3條 1.如果函式內部有global語句,那麼它宣告的變數是全域性的。2.如果函式內部有對變數的賦值語句,那麼它是局域的。3.除此之外都是全域性的。注意1...

python 引數傳遞 python引數傳遞

python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。函式引數的定義有四種形式 1.f arg...