แม้ว่าคำถามนี้จะไม่มีการใช้งานจริงในทางปฏิบัติ แต่ฉันก็อยากรู้ว่า 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 อักขระ