Runtime Error
การเก็บข้อมูลเข้าตัวแปร
ต้องอธิบายก่อนว่า ปกติแล้ว Python จะทำการใช้พื้นที่ให้น้อยที่สุด เพื่อให้มันไม่หนักเครื่องและประหยัดทรัพยากร และถ้าจำเป็นที่จะต้องไปขอพื้นที่เพื่ม ก็จะไปขอให้ แต่ก็ต้องเพราะว่า มันจำเป็นนั่นเอง
โดยหลักการลดพิ้นที่จัดเก็บนั้น ก็ได้เข้ามาสู่ตัวแปรครับ
เพื่อที่จะให้ Python ทำการใช้ข้อมูลจัดเก็บให้น้อยที่สุด Python จะทำการรวมตัวแปร เช่น
var1 = "Kuma"
var1 = var2
หากว่าน้องๆทำการเทียบด้วย ==
แล้ว
var1 == var2
ก็จะได้ออกมาเป็น True
เพราะมันอันเดียวกันเลย พอเวลาเรียกเบอร์ใน memory (เหมือนเบอร์ตู้ locker) ก็จะบอกเบอร์เดียวกัน ทำให้ไม่ต้องไปเปิด locker อีก
และยังย่อไม่พอครับ แบบนี้เค้าก็ย่อได้นะ
var1 = "Kuma"
var2 = "Kuma"
หากว่าน้องๆทำการเทียบด้วย ==
แล้ว
var1 == var2
ก็จะออกมาเป็น True เพราะ Python ตอนที่ Analyze code ก็จะทำการให้มันเก็บเข้าไปในเบอร์เดียวกัน เหมือน อันแรกเลยจ้า
แต่ว่า อันนี้ก็จะไม่ใช่แล้วแหละ
var1 = 'a' * 100
var2 = 'a' * 100
print(var1 == var2)
print(var1 is var2)
ผลลัพท์ก็จะออกมาดังนี้ครับ
True
False
ถ้าน้องยังงงหลักการ หรือไม่รู้ว่า is คืออะไร ให้ไปอ่านข้างล่างก่อนครับ แล้วค่อยมาอ่านต่อ
น้องๆก็จะเห็นว่า is
ไม่ได้ค่าเท่ากับ ==
เลย เพราะว่า Python เลือกที่จะเก็บข้อมูลคนละที่กัน ทำให้ผลลัพท์เป็นเท็จนี่เอง
is
keyword
Introduction to โดยหลักการของ is
นั่นก็คือ หากว่ามันคืออันเดียวกัน เก็บข้อมูลใน Memory address เดียวกันด้วย ก็จะตอบลกลับมาว่า True
ความแตกต่างระหว่าง ==
และ is
ก็จะเป็นเรื่องของที่อยู่จัดเก็บ (Memory Address) ที่ต้องเป็นอันเดียวกันด้วยนั่นเอง
เช่น
var1 = "Kuma"
var2 = var1
print(var1 is var2)
ก็จะออกผลลัพท์มาเป็น True นั่นเอง เพราะการทำบรรทัดที่ 2 นั่น ไม่ใช้แค่ตัวแปร var2
จะก้อปปี้ string แล้ว ก็ยังก้อปปี้ address ด้วยครับ
Reference