บทที่ 1.2: ชนิดข้อมูลและการแปลงประเภท (Data Types & Type Casting)
เอกสารนี้อธิบายเกี่ยวกับชนิดข้อมูลพื้นฐาน (Primitive Data Types) ชนิดข้อมูลขั้นสูง ระบบการตรวจสอบชนิดข้อมูล และการแปลงประเภทข้อมูล (Type Casting) ทั้งแบบอัตโนมัติและแบบกำหนดเอง
1. ชนิดข้อมูลพื้นฐาน (Primitive Data Types)
ภาษา Python มีชนิดข้อมูลหลักที่ใช้งานบ่อยดังต่อไปนี้:
| ชนิดข้อมูล | ชื่อประเภท (Type Name) | ตัวอย่างค่า | คำอธิบาย |
|---|---|---|---|
| จำนวนเต็ม | int |
-5, 0, 42 |
ตัวเลขไม่มีทศนิยม ไม่จำกัดขนาดความยาว |
| ทศนิยม | float |
3.14, -0.001, 2.0 |
ตัวเลขทศนิยมแบบ Floating-point |
| ข้อความ | str |
"Hello", 'Python' |
ชุดตัวอักษรเรียงต่อกัน |
| ค่าความจริง | bool |
True, False |
ค่าตรรกศาสตร์ (ตัวอักษรแรกต้องเป็นตัวใหญ่) |
| ค่าว่าง | NoneType |
None |
ตัวแทนของค่าที่ไม่มีอยู่จริง หรือยังไม่ได้กำหนด |
2. การตรวจสอบชนิดข้อมูล (Type Checking)
การตรวจสอบชนิดข้อมูลของตัวแปรสามารถทำได้ผ่าน 2 ฟังก์ชันหลัก:
2.1 ฟังก์ชัน type()
คืนค่าคลาสของชนิดข้อมูลนั้นๆ ออกมาโดยตรง
x = 100
name = "Sebastian"
print(type(x)) # Output: <class 'int'>
print(type(name)) # Output: <class 'str'>
2.2 ฟังก์ชัน isinstance()
ใช้ตรวจสอบว่าตัวแปรตรงกับชนิดข้อมูลที่ระบุหรือไม่ คืนค่าเป็น True หรือ False (แนะนำให้ใช้ในการเขียนฟังก์ชัน)
age = 25
# ตรวจสอบประเภทข้อมูล
print(isinstance(age, int)) # Output: True
# ตรวจสอบกับหลายประเภทข้อมูล
print(isinstance(age, (int, float))) # Output: True
3. การแปลงชนิดข้อมูล (Type Casting)
การแปลงชนิดข้อมูลแบ่งออกเป็น 2 รูปแบบหลัก:
3.1 Implicit Type Conversion (การแปลงประเภทแบบอัตโนมัติ)
Python จะทำการแปลงชนิดข้อมูลให้อัตโนมัติในกรณีที่มีการคำนวณร่วมกันเพื่อป้องกันข้อมูลสูญหาย (เช่น นำ int บวกกับ float)
num_int = 10 # int
num_float = 2.5 # float
# Python แปลง num_int เป็น float ก่อนทำการบวก
result = num_int + num_float
print(result) # Output: 12.5
print(type(result)) # Output: <class 'float'>
3.2 Explicit Type Conversion (การแปลงประเภทแบบกำหนดเอง)
การใช้ฟังก์ชันสร้างชนิดข้อมูล (Type Constructor Functions) เพื่อบังคับเปลี่ยนประเภทข้อมูลตามต้องการ
# 1. แปลงเป็น Integer: int()
print(int(3.89)) # Output: 3 (ตัดทศนิยมทิ้ง ไม่ได้ปัดเศษ)
print(int("150")) # Output: 150
# 2. แปลงเป็น Float: float()
print(float(10)) # Output: 10.0
print(float("20.5")) # Output: 20.5
# 3. แปลงเป็น String: str()
print(str(100)) # Output: "100"
print(str(True)) # Output: "True"
# 4. แปลงเป็น Boolean: bool()
# ค่าที่เป็น 0, "", None, [], {}, () จะกลายเป็น False (Falsy Values)
# ค่าอื่นๆ จะกลายเป็น True (Truthy Values)
print(bool(0)) # Output: False
print(bool("")) # Output: False
print(bool("Hello")) # Output: True
print(bool(100)) # Output: True
4. ข้อระวังในการแปลงชนิดข้อมูล (Casting Caveats)
หากพยายามแปลงข้อความที่ไม่ใช่ตัวเลขให้กลายเป็น int หรือ float จะเกิดข้อผิดพลาด ValueError ทันที
invalid_str = "abc123"
# จะเกิด ValueError: invalid literal for int() with base 10: 'abc123'
num = int(invalid_str)
การจัดการความปลอดภัยในการแปลงค่าควรรองรับด้วย Exception Handling: