On this page
ตัวแปร & ชนิดข้อมูล (Variables & Data Types)
กล่องเก็บข้อมูลและชนิดของข้อมูลแต่ละแบบ — รากฐานของทุกบรรทัดที่คุณจะเขียนต่อจากนี้
ตัวแปร (variable) คือ "กล่องที่ตั้งชื่อไว้" สำหรับเก็บข้อมูลในหน่วยความจำ (RAM) เพื่อนำกลับมาใช้ทีหลัง นี่คือสิ่งแรกที่ทุกโปรแกรมต้องใช้ บทย่อยนี้จะเจาะลึกตั้งแต่วิธีสร้าง ชนิดข้อมูลแต่ละแบบ การแปลงชนิด ไปจนถึงกับดักที่มือใหม่เจอบ่อย
เปิด replit.com หรือ programiz.com/python-programming/online-compiler แล้วพิมพ์โค้ดทุกชิ้นเอง พร้อมลองเปลี่ยนค่าดูผลลัพธ์ การลงมือทำคือสิ่งที่ทำให้เข้าใจจริง
สร้างตัวแปรอย่างไร
ใน Python สร้างตัวแปรด้วยการกำหนดค่าผ่านเครื่องหมาย = (อ่านว่า "กำหนดให้เท่ากับ" ไม่ใช่ "เท่ากับ" ทางคณิตศาสตร์) ฝั่งซ้ายคือชื่อ ฝั่งขวาคือค่า และไม่ต้องประกาศชนิดล่วงหน้า Python รู้ชนิดเองจากค่า
age = 25 # สร้างกล่องชื่อ age เก็บเลข 25
name = "Aphisit" # กล่อง name เก็บข้อความ
print(age) # 25
print(name) # Aphisit
age = age + 1 # อ่านค่าเดิม (25) บวก 1 แล้วเก็บกลับ
print(age) # 26ลำดับการทำงานของ age = age + 1 สำคัญ: คอมพิวเตอร์คำนวณฝั่งขวาก่อน (25 + 1 = 26) แล้วค่อยเก็บผลลัพธ์กลับเข้ากล่อง age การเข้าใจจุดนี้ช่วยให้ไม่งงกับโค้ดที่อัปเดตตัวเอง
ชนิดข้อมูลพื้นฐาน (Data Types)
ข้อมูลมีหลายชนิด แต่ละชนิดทำสิ่งที่ต่างกัน เช่นบวกตัวเลขได้ผลเป็นผลรวม แต่ "บวก" ข้อความได้ผลเป็นการต่อคำ จำ 5 ชนิดพื้นฐานนี้ให้ขึ้นใจ
| ชนิด | ชื่อเต็ม | ตัวอย่าง | ใช้เก็บ |
|---|---|---|---|
| int | integer | 0, 25, -7, 1000000 | จำนวนเต็ม |
| float | floating point | 1.75, -0.5, 3.0 | เลขทศนิยม |
| str | string | "hello", "ก", "123" | ข้อความ |
| bool | boolean | True, False | ค่าจริง/เท็จ |
| NoneType | none | None | ไม่มีค่า / ยังไม่กำหนด |
age = 25 # int
height = 1.75 # float
name = "Aphisit" # str
is_student = True # bool (ขึ้นต้นตัวใหญ่: True / False)
middle_name = None # ยังไม่มีค่า
# เช็คชนิดด้วยฟังก์ชัน type()
print(type(age)) # <class 'int'>
print(type(height)) # <class 'float'>
print(type(name)) # <class 'str'>int เก็บจำนวนเต็ม (ไม่มีจุดทศนิยม) ส่วน float เก็บเลขมีจุดทศนิยม สังเกตว่า 3 เป็น int แต่ 3.0 เป็น float แม้ค่าจะเท่ากัน และผลของการหาร / จะเป็น float เสมอ (10 / 2 = 5.0 ไม่ใช่ 5)
ข้อความ (String) เขียนได้หลายแบบ
a = 'เครื่องหมายคำพูดเดี่ยวก็ได้'
b = "หรือคู่ก็ได้ ผลเหมือนกัน"
c = """ข้อความ
หลายบรรทัด
ใช้สามตัว"""
# ถ้าในข้อความมีเครื่องหมายคำพูด ให้ใช้ชนิดสลับกัน
quote = 'เขาพูดว่า "สวัสดี"'
print(quote) # เขาพูดว่า "สวัสดี"การแปลงชนิดข้อมูล (Type Conversion)
บ่อยมากที่เราต้องแปลงชนิด โดยเฉพาะข้อมูลที่รับจากผู้ใช้ผ่าน input() ซึ่งได้เป็น str เสมอ ถ้าจะนำไปคำนวณต้องแปลงเป็นตัวเลขก่อน
x = "5" # นี่คือข้อความ ไม่ใช่ตัวเลข
print(x + x) # 55 (ต่อข้อความ ไม่ใช่ 10!)
print(int(x) + 1) # 6 (แปลงเป็น int ก่อนค่อยบวก)
print(int("42")) # 42 str -> int
print(float("3.5")) # 3.5 str -> float
print(str(100)) # '100' int -> str
print(int(3.9)) # 3 float -> int (ตัดเศษทิ้ง ไม่ปัด!)
print(bool(0)) # False (0 = เท็จ, ตัวเลขอื่น = จริง)ลืมแปลง input() เป็นตัวเลข แล้วเอาไปบวกกัน เช่น a = input() ; b = input() ; print(a + b) ถ้าใส่ 2 กับ 3 จะได้ '23' ไม่ใช่ 5 ต้องครอบด้วย int() ตอนรับ: a = int(input())
กฎและธรรมเนียมการตั้งชื่อตัวแปร
ชื่อตัวแปรที่ดีคือชื่อที่อ่านแล้วรู้เลยว่าเก็บอะไร ไม่ต้องเดา โค้ดจริงถูกอ่านบ่อยกว่าถูกเขียน การตั้งชื่อดีจึงสำคัญมาก
| กฎ | ถูก | ผิด |
|---|---|---|
| ใช้ตัวพิมพ์เล็กคั่นด้วย _ (snake_case) | user_age | UserAge / userage |
| สื่อความหมาย | total_price | x / tp / a1 |
| ห้ามขึ้นต้นด้วยตัวเลข | item1 | 1item |
| ห้ามมีช่องว่างหรืออักขระพิเศษ | first_name | first name |
| ห้ามใช้คำสงวน | class_name | class / for / if |
ถ้าเป็นค่าที่ไม่ตั้งใจให้เปลี่ยน นิยมตั้งชื่อด้วยตัวพิมพ์ใหญ่ทั้งหมด เช่น PI = 3.14159 หรือ MAX_SCORE = 100 Python ไม่ได้บังคับ แต่เป็นสัญญาณบอกเพื่อนร่วมทีมว่า "อย่าแก้ค่านี้"
กำหนดค่าหลายตัวพร้อมกัน
x, y, z = 1, 2, 3 # กำหนดทีเดียวหลายตัว
print(x, y, z) # 1 2 3
a = b = c = 0 # กำหนดค่าเดียวกันให้หลายตัว
x, y = y, x # สลับค่ากันได้ในบรรทัดเดียว!
print(x, y) # 2 1สรุปหัวข้อนี้
- ตัวแปรคือกล่องตั้งชื่อเก็บข้อมูลใน RAM สร้างด้วย ชื่อ = ค่า
- ชนิดพื้นฐาน: int, float, str, bool, None — เช็คด้วย type()
- แปลงชนิดด้วย int(), float(), str(), bool() — สำคัญมากกับ input()
- ตั้งชื่อแบบ snake_case ให้สื่อความหมาย เลี่ยงคำสงวน
1) สร้างตัวแปรเก็บชื่อ อายุ ส่วนสูง แล้ว print ออกมาเป็นประโยค 2) รับเลข 2 ตัวจาก input() แล้วหาผลรวม (ระวังต้อง int ก่อน) 3) ลองสลับค่าตัวแปร 2 ตัวด้วยบรรทัดเดียว 4) ทดลอง int(3.9), bool(0), bool("hi") ดูผลลัพธ์ว่าได้อะไร