Python之旅 變數賦值

2021-10-14 16:27:39 字數 4163 閱讀 3284

python中,變數是物件的引用。變數賦值,即將變數指向值物件,對值物件的引用。

值物件的分類:

不可變物件,通俗的講,就是不可以改變物件的內容。比如:數字,字串,元祖tuple

變數指向的值物件不可變,但變數的指向可變,即可以改為指向新的值物件。

1. 值物件為數字

a =

10b = a

print

("a addr: 0x%x val: %d"%(

id(a)

, a)

)print

("b addr: 0x%x val: %d"%(

id(b)

, b)

)print

("-"*30

)a =

100print

("a addr: 0x%x val: %d"%(

id(a)

, a)

)print

("b addr: 0x%x val: %d"%(

id(b)

, b)

**輸出:

a addr:

0x7ffb45d47d60 val:

10b addr:

0x7ffb45d47d60 val:10-

----

----

----

----

----

----

----

-a addr:

0x7ffb45d488a0 val:

100b addr:

0x7ffb45d47d60 val:

10

2. 值物件為字串

a =

"hello"

b = a

print

("a addr: 0x%x val: %s"%(

id(a)

, a)

)print

("b addr: 0x%x val: %s"%(

id(b)

, b)

)print

("-"*30

)a +=

" python!"

print

("a addr: 0x%x val: %s"%(

id(a)

, a)

)print

("b addr: 0x%x val: %s"%(

id(b)

, b)

**輸出:

a addr:

0x1dd1cdb71b0 val: hello

b addr:

0x1dd1cdb71b0 val: hello--

----

----

----

----

----

----

----

a addr:

0x1dd1cfb62b0 val: hello python!

b addr:

0x1dd1cdb71b0 val: hello

3. 值物件為tuple

a =(1

,2)print

("a addr: 0x%x val: %s"%(

id(a)

, a)

)print

("-"*35

)b =(1

,2)print

("b addr: 0x%x val: %s"%(

id(b)

, b)

)print

("-"*35

)a =(3

,4)print

("a addr: 0x%x val: %s"%(

id(a)

, a)

)

**輸出:

a addr:

0x2af983d7988 val:(1

,2)-

----

----

----

----

----

----

----

----

--b addr:

0x2af983d7988 val:(1

,2)-

----

----

----

----

----

----

----

----

--a addr:

0x2af985e7948 val:(3

,4)

值物件內容可變,比如:列表list,字典dict和集合set

修改值物件的內容,所有引用當前值物件的變數,都可見修改。

1. 列表

a =[1

,2,3

]b =[1

,2,3

]c = a

print

("addr a=0x%x b=0x%x c=0x%x"%(

id(a),id

(b),

id(c)))

print

("-"*30

)c[0]

=4print

(f"a="

)print

(f"b="

)print

(f"c="

)

**輸出:

addr a=

0x2b2780d5208 b=

0x2b2780d5408 c=

0x2b2780d5208--

----

----

----

----

----

----

----

a=[4,

2,3]

b=[1,

2,3]

c=[4,

2,3]

2. 字典

a =

b =c = a

print

("addr a=0x%x b=0x%x c=0x%x"%(

id(a),id

(b),

id(c)))

print

("-"*30

)c["m"]=4

print

(f"a="

)print

(f"b="

)print

(f"c="

)

**輸出:

addr a=

0x20412912b88 b=

0x20412912bd8 c=

0x20412912b88--

----

----

----

----

----

----

----

a=b=

c=

3. 集合

a =

b =c = a

print

("addr a=0x%x b=0x%x c=0x%x"%(

id(a),id

(b),

id(c)))

print

("-"*30

)c.remove(2)

print

(f"a="

)print

(f"b="

)print

(f"c="

)

**輸出:

addr a=

0x1de10219908 b=

0x1de1041eba8 c=

0x1de10219908--

----

----

----

----

----

----

----

a=b=

c=

python變數賦值

從python2.0開始 等號可以和乙個算術操作符組合在一起,將計算結果重新賦值給左邊的變數,這被稱為增量賦值,類似下面的語句 x x 1 現在可以被寫作 x 1增量賦值相對普通賦值不僅僅是寫法上的改變,最有意義的變化是第乙個物件,金盃處理一次,可變物件會被就地修改 無修拷貝引用 不可變物件則和a ...

python 變數賦值

對於變數的內容再去傳遞,傳遞的是物件,有的傳遞物件本身,有的傳遞物件引用。可變資料型別 列表 字典。a 1,2,3 b a c a a 0 8 d 8,2,3 print a 8,2,3 print b 8,2,3 print c 1,2,3 print d 8,2,3 print id a 140...

python賦值中文變數 Python變數引用賦值

不,你不能。正如其他答案所指出的,你可以 ab?使用可變物件的別名來實現類似的效果。然而,這與c 引用不一樣,我想解釋一下實際上發生了什麼,以避免任何誤解。你可以看到,在c 和其他語言 中,變數 和物件字段,以及集合中的條目等 是乙個儲存位置,並且你可以將乙個值 例如,乙個整數 乙個物件或乙個指標 ...