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 เลือกที่จะเก็บข้อมูลคนละที่กัน ทำให้ผลลัพท์เป็นเท็จนี่เอง

Introduction to is keyword

โดยหลักการของ is นั่นก็คือ หากว่ามันคืออันเดียวกัน เก็บข้อมูลใน Memory address เดียวกันด้วย ก็จะตอบลกลับมาว่า True

ความแตกต่างระหว่าง == และ is ก็จะเป็นเรื่องของที่อยู่จัดเก็บ (Memory Address) ที่ต้องเป็นอันเดียวกันด้วยนั่นเอง

เช่น

var1 = "Kuma"
var2 = var1

print(var1 is var2)

ก็จะออกผลลัพท์มาเป็น True นั่นเอง เพราะการทำบรรทัดที่ 2 นั่น ไม่ใช้แค่ตัวแปร var2 จะก้อปปี้ string แล้ว ก็ยังก้อปปี้ address ด้วยครับ


Reference