Notes & software courses · Free to learn
Aph's Blog
On this page

ตัวแปร & ชนิดข้อมูล (Variables & Data Types)

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

กล่องเก็บข้อมูลและชนิดของข้อมูลแต่ละแบบ — รากฐานของทุกบรรทัดที่คุณจะเขียนต่อจากนี้

ตัวแปร (variable) คือ "กล่องที่ตั้งชื่อไว้" สำหรับเก็บข้อมูลในหน่วยความจำ (RAM) เพื่อนำกลับมาใช้ทีหลัง นี่คือสิ่งแรกที่ทุกโปรแกรมต้องใช้ บทย่อยนี้จะเจาะลึกตั้งแต่วิธีสร้าง ชนิดข้อมูลแต่ละแบบ การแปลงชนิด ไปจนถึงกับดักที่มือใหม่เจอบ่อย

พิมพ์ตามไปด้วยทุกตัวอย่าง

เปิด replit.com หรือ programiz.com/python-programming/online-compiler แล้วพิมพ์โค้ดทุกชิ้นเอง พร้อมลองเปลี่ยนค่าดูผลลัพธ์ การลงมือทำคือสิ่งที่ทำให้เข้าใจจริง

สร้างตัวแปรอย่างไร

ใน Python สร้างตัวแปรด้วยการกำหนดค่าผ่านเครื่องหมาย = (อ่านว่า "กำหนดให้เท่ากับ" ไม่ใช่ "เท่ากับ" ทางคณิตศาสตร์) ฝั่งซ้ายคือชื่อ ฝั่งขวาคือค่า และไม่ต้องประกาศชนิดล่วงหน้า 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 ชนิดพื้นฐานนี้ให้ขึ้นใจ

ชนิดชื่อเต็มตัวอย่างใช้เก็บ
intinteger0, 25, -7, 1000000จำนวนเต็ม
floatfloating point1.75, -0.5, 3.0เลขทศนิยม
strstring"hello", "ก", "123"ข้อความ
boolbooleanTrue, Falseค่าจริง/เท็จ
NoneTypenoneNoneไม่มีค่า / ยังไม่กำหนด
python
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 ต่างกันอย่างไร

int เก็บจำนวนเต็ม (ไม่มีจุดทศนิยม) ส่วน float เก็บเลขมีจุดทศนิยม สังเกตว่า 3 เป็น int แต่ 3.0 เป็น float แม้ค่าจะเท่ากัน และผลของการหาร / จะเป็น float เสมอ (10 / 2 = 5.0 ไม่ใช่ 5)

ข้อความ (String) เขียนได้หลายแบบ

python
a = 'เครื่องหมายคำพูดเดี่ยวก็ได้'
b = "หรือคู่ก็ได้ ผลเหมือนกัน"
c = """ข้อความ
หลายบรรทัด
ใช้สามตัว"""

# ถ้าในข้อความมีเครื่องหมายคำพูด ให้ใช้ชนิดสลับกัน
quote = 'เขาพูดว่า "สวัสดี"'
print(quote)   # เขาพูดว่า "สวัสดี"

การแปลงชนิดข้อมูล (Type Conversion)

บ่อยมากที่เราต้องแปลงชนิด โดยเฉพาะข้อมูลที่รับจากผู้ใช้ผ่าน input() ซึ่งได้เป็น str เสมอ ถ้าจะนำไปคำนวณต้องแปลงเป็นตัวเลขก่อน

python
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_ageUserAge / userage
สื่อความหมายtotal_pricex / tp / a1
ห้ามขึ้นต้นด้วยตัวเลขitem11item
ห้ามมีช่องว่างหรืออักขระพิเศษfirst_namefirst name
ห้ามใช้คำสงวนclass_nameclass / for / if
ค่าคงที่ (Constant)

ถ้าเป็นค่าที่ไม่ตั้งใจให้เปลี่ยน นิยมตั้งชื่อด้วยตัวพิมพ์ใหญ่ทั้งหมด เช่น PI = 3.14159 หรือ MAX_SCORE = 100 Python ไม่ได้บังคับ แต่เป็นสัญญาณบอกเพื่อนร่วมทีมว่า "อย่าแก้ค่านี้"

กำหนดค่าหลายตัวพร้อมกัน

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") ดูผลลัพธ์ว่าได้อะไร