Skip to content

บทที่ 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:

user_input = "abc"

try:
    number = int(user_input)
except ValueError:
    print("ไม่สามารถแปลงข้อมูลเป็นตัวเลขได้")