初學 Python Day Seven— Copied by Value and Copied by Reference

SHACK LIN
3 min readAug 25, 2023

--

今天在比較詳細紀錄一下 Python 內的 Copied by Value and Copied by Reference

Copied by Value

Integers、floats、booleans、string 是 copied by value,也就是說當你賦予一個變數值後,若將該變數等於另外一個變數,若對另外變數賦予新的值,則不會影響原變數的值。

a=23.22
b=a
b=25.55
print(a) #23.22
print(b) #25.55

Copied by Reference

Sets、tuples、lists、dictionaries 是 copied by reference,你賦予一個變數值後,若將該變數等於另一變數,則此變數會將原變數的記憶體位置同樣複製,所以當你對新的變數賦予新的值時,由於記憶體位置沒有改變,所以兩個變數都指向同樣的記憶體位置,導致值都會被改變。

a=['hello',2,3,4,'berlin']
b=a
b[2]='Change'
print(a) #['hello', 2, 'Change', 4, 'berlin']
print(b) #['hello', 2, 'Change', 4, 'berlin']

若對 Sets、tuples、lists、dictionaries 使用 copy function ,則會對新的對數產生一個新的記憶體位置,所以就會更改新變數的值,也不會更改原變數的值。

a = {'city': 'Berlin', 'age': 25, 'name': 'Shack'}
b = a.copy()
b['city'] = 'Taipei'
print(a) #{'city': 'Berlin', 'age': 25, 'name': 'Shack'}
print(b) #{'city': 'Taipei', 'age': 25, 'name': 'Shack'}

Sort 及 Sorted function

Sort function 只在 list 型態中適用,使用 Sort function 會更改原來的 list ,而 Sorted function 針對其他型態都有適用,會返回一個新的 List 型態,且不會更改原有的資料內容。

a=['shack','taiwan','apple','banana']
b=a.sort()
print(a) #['apple', 'banana', 'shack', 'taiwan']
print(b) # None
x='How are you today?'
y=sorted(x)
print(x) #How are you today?
print(y) #[' ', ' ', ' ', '?', 'H', 'a', 'a', 'd', 'e', 'o', 'o', 'o', 'r', 't', 'u', 'w', 'y', 'y']
x=(4,2,4,1)
y=sorted(x)
print(x) #(4, 2, 4, 1)
print(y) # [1, 2, 4, 4]
x={"name":"Shack","age":25}
y=sorted(x)
print(x) #{'name': 'Shack', 'age': 25}
print(y) # ['age', 'name']

若你喜歡今天的紀錄,請幫忙分享,Ich wünsche dir einen schönen Tag : )

--

--

SHACK LIN

喜歡嘗試新事物的 6 / 2 人,因緣際會下學習 Python 開啟自己對 Coding 的興趣。自學前端技術,持續朝前往德國及日本工作的夢想努力。