แม้ว่าคำถามนี้จะไม่มีการใช้งานจริงในทางปฏิบัติ แต่ฉันก็อยากรู้ว่า Python ใช้งานสตริงได้อย่างไร ฉันสังเกตเห็นสิ่งต่อไปนี้
>>> "string" is "string"
True
นี่เป็นไปตามที่ฉันคาดไว้
คุณยังสามารถทำได้
>>> "strin"+"g" is "string"
True
และนั่นก็ค่อนข้างฉลาด!
แต่คุณไม่สามารถทำได้
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
เหตุใด Python จึงไม่ประเมินs1+"g"
และตระหนักว่ามันเหมือนกับs2
และชี้ไปที่ที่อยู่เดียวกัน เกิดอะไรขึ้นในบล็อกสุดท้ายที่จะให้มันกลับมาFalse
?
"string1" + "s2"
,10 + 3*20
ฯลฯ ) ที่รวบรวมเวลา แต่ข้อ จำกัด ที่เกิดวนเวียนอยู่เพียงแค่ 20 องค์ประกอบ (เพื่อป้องกัน[None] * 10**1000
จากการขยายตัวมากเกินไป bytecode ของคุณ) มันคือการเพิ่มประสิทธิภาพที่ทรุด"strin" + "g"
ลงไป"string"
; ผลลัพธ์จะสั้นกว่า 20 อักขระ