python引數傳遞

2021-08-20 20:10:30 字數 1077 閱讀 6534

給變數以資料,而不是給資料以變數

變數不存在實體,它僅僅是乙個標籤,一旦賦值就被設定到另乙個物體上,不變的是那些物體,即『物件』。python中所有的東西都是物件,包括函式、類、模組,甚至字串『hello',數字1,2,3都是物件。

多看幾個例子就明白了~

例:

a=1

b=2c=1

a=b

a和c指向同乙個物件整數1,給a賦值b後,a指向2。1和c都不受影響。

例:

a = 1

print('a', a, id(a))

b = 2

print('b', b, id(b))

c = 1

print('c', c, id(c))

# 再次賦值

a = b

print('a', a, id(a))

輸出:

a 1 4301490544

b 2 4301490576

c 1 4301490544

a 2 4301490576

id() 可以認為是獲取乙個物件的位址。可以看出,a 和 c 開始其實是同乙個位址,而後來賦值之後,a 又和 b 是同乙個位址。每次給變數重新賦值,它就指向了新的位址,與原來的位址無關了。

例:

a = [1,2,3]

print('a', a, id(a))

b = a

print('b', b, id(b))

b[1] = 5

print('a', a, id(a))

print('b', b, id(b))

輸出:

a [1, 2, 3] 4490723464

b [1, 2, 3] 4490723464

a [1, 5, 3] 4490723464

b [1, 5, 3] 4490723464

b 賦值為 a 後,和 a 指向同乙個列表物件。[1] 這個基於 index 的賦值是 list 物件本身的一種操作,並沒有給 b 重新貼標籤,改變的是物件本身。所以 b 指向的還是原來的物件,此物件的改動自然也會體現在 a 身上。

python 引數傳遞 Python 引數傳遞

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

python 引數傳遞 python引數傳遞

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

python變數傳遞 Python引數傳遞

在 python 中,型別屬於物件,變數是沒有型別的 a 1,2,3 a runoob 以上 中,1,2,3 是 list 型別,runoob 是 string 型別,而變數 a 是沒有型別,她僅僅是乙個物件的引用 乙個指標 可以是指向 list 型別物件,也可以是指向 string 型別物件。可更...