ฉันเพิ่งเริ่มการปรับแต่งสตริงและพบคำถามนี้ ฉันอาจจะพยายามทำอะไรบางอย่างเช่น OP "ปกติฉัน" คำตอบก่อนหน้านี้ไม่ได้ช่วยคลายความสับสนของฉัน แต่หลังจากคิดสักนิดในที่สุดฉันก็ "เข้าใจ"
ตราบใดที่a
, b
, c
, d
และe
มีค่าเดียวกันพวกเขาอ้างอิงถึงสถานที่เดียวกัน บันทึกหน่วยความจำแล้ว ทันทีที่ตัวแปรเริ่มมีค่าที่แตกต่างกันตัวแปรจะเริ่มมีการอ้างอิงที่แตกต่างกัน ประสบการณ์การเรียนรู้ของฉันมาจากรหัสนี้:
import copy
a = 'hello'
b = str(a)
c = a[:]
d = a + ''
e = copy.copy(a)
print map( id, [ a,b,c,d,e ] )
print a, b, c, d, e
e = a + 'something'
a = 'goodbye'
print map( id, [ a,b,c,d,e ] )
print a, b, c, d, e
ผลลัพธ์ที่พิมพ์ออกมาคือ:
[4538504992, 4538504992, 4538504992, 4538504992, 4538504992]
hello hello hello hello hello
[6113502048, 4538504992, 4538504992, 4538504992, 5570935808]
goodbye hello hello hello hello something