
เขียนโปรแกรมภาษา Python ตอนที่ 65 ตัวดำเนินการ
Operator หรือตัวดำเนินการ ใช้สำหรับดำเนินการกับตัวแปรหรือค่าต่าง ๆ เช่น บวก ลบ คูณ หาร กำหนดค่า เปรียบเทียบค่า เป็นต้น
ภาษา Python แบ่งตัวดำเนินการออกเป็น 7 กลุ่ม ดังนี้
- Arithmetic operators ตัวดำเนินการทางคณิตศาสตร์
- Assignment operators ตัวดำเนินการด้านการกำหนดค่า
- Comparison operators ตัวดำเนินการด้านการเปรียบเทียบ
- Logical operators ตัวดำเนินการด้านตรรกะ
- Identity operators ตัวดำเนินการด้านเอกลักษณ์
- Membership operators ตัวดำเนินการที่ใช้ตรวจสอบการเป็นสมาชิก
- Bitwise operators ตัวดำเนินการระดับบิต
Arithmetic operators ตัวดำเนินการทางคณิตศาสตร์
Arithmetic operators ตัวดำเนินการทางคณิตศาสตร์ ใช้สำหรับดำเนินการด้านคณิตศาสตร์พื้นฐานกับค่าที่เป็นตัวเลข มีตัวดำเนินการในกลุ่ม 7 ตัว ดังนี้
ตัวดำเนินการ + ( Addition ) สำหรับเพิ่มค่าให้กับตัวแปรหรือจำนวนใด ๆ เช่น
x = 15 y = 13 print(x + y + 100) # 128
ตัวดำเนินการ – ( Subtraction ) สำหรับลดค่าให้ตัวแปรหรือหรือจำนวนใด ๆ เช่น
x = 15 y = 13 print(x - y) # 2
ตัวดำเนินการ * ( Multiplication ) สำหรับคูณค่าของตัวแปรหรือจำนวนใด ๆ เช่น
x = 15 y = 13 print(x * y) # 195
ตัวดำเนินการ / ( Division ) สำหรับหารค่าของตัวแปรหรือจำนวนใด ๆ โดยถ้าหารไม่ลงตัวจะได้ทศนิยมมาด้วย เช่น
x = 15 y = 4 print(x / y) # 3.75
ตัวดำเนินการ % ( Modulus ) สำหรับหารค่าของตัวแปรหรือจำนวนใด ๆ โดยเอาเฉพาะเศษ เช่น
x = 21 y = 4 print(x % y) # 1
ตัวดำเนินการ ** ( Exponentiation ) สำหรับคูณค่าของตัวแปรหรือจำนวนใด ๆ ในรูปแบบของตัวเลขยกกำลัง เช่น 2 ** 2 จะได้ผลลัพธ์เท่ากับ 2 ยกกำลัง 2 นั่นเอง ตัวอย่างเช่น
x = 15 y = 4 print(x ** y) # 50625 (same as 15 x 15 x 15 x 15)
ตัวดำเนินการ // ( Floor division ) สำหรับหารค่าของตัวแปรหรือจำนวนใด ๆ โดยผลลัพธ์จะเอาเฉพาะจำนวนเต็ม ปัดเศษทิ้ง เช่น
x = 15 y = 4 print(x // y) # 3
Assignment operators ตัวดำเนินการด้านการกำหนดค่า
Assignment operators ตัวดำเนินการด้านการกำหนดค่า ใช้สำหรับกำหนดค่าใด ๆ ให้กับตัวแปร มีตัวดำเนินการในกลุ่มทั้งหมด 13 ตัว ซึ่งมีรายละเอียดและวิธีใช้งานดังนี้
ตัวดำเนินการ = ใช้สำหรับกำหนดค่าให้กับตัวแปร เช่น
x = 21 print(x) # 21
ตัวดำเนินการ += ใช้สำหรับกำหนดค่าให้ตัวแปรใด ๆ โดยทำการเพิ่มค่าให้กับตัวแปรนั้นตามจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วจึงกำหนดค่าใหม่ให้กับตัวแปรนั้น เช่น
x = 20 x += 10 print(x) # 30 (same as x = x + 10)
ตัวดำเนินการ -= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการลดค่าให้กับตัวแปรนั้นตามจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วจึงกำหนดค่าใหม่ให้กับตัวแปรนั้น เช่น
x = 20 x -= 10 print(x) # 10 (same as x = x - 10)
ตัวดำเนินการ *= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการคูณกับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วจึงกำหนดค่าให้กับตัวแปรนั้น เช่น
x = 20 x *= 10 print(x) # 200 (same as x = x * 10)
ตัวดำเนินการ /= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการหารกับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้กับตัวแปรนั้น เช่น
x = 20 x /= 10 print(x) # 2.0 (same as x = x / 10)
ตัวดำเนินการ %= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการหาร (เอาเฉพาะเศษ) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้กับตัวแปรนั้น เช่น
x = 21 x %= 10 print(x) # 1 (same as x = x % 10)
ตัวดำเนินการ //= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการหาร (ปัดเศษทิ้ง เอาเฉพาะจำนวนเต็ม) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้กับตัวแปรนั้น เช่น
x = 32 x //= 10 print(x) # 3 (same as x = x // 10)
ตัวดำเนินการ **= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยทำการนำค่าในตัวแปรไปยกกำลังกับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้กับตัวแปรนั้น เช่น
x = 3 x **= 3 print(x) # 27 (same as x = x ** 3)
ตัวดำเนินการ &= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยจะนำค่าในตัวแปรนั้นไปดำเนินการด้วยตัวดำเนินการ & (AND) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้ตัวแปรนั้น เช่น
x = 3 x &= 3 print(x) # 3 (same as x = x & 3)
ตัวดำเนินการ |= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยจะนำค่าในตัวแปรนั้นไปดำเนินการด้วยตัวดำเนินการ | (OR) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้ตัวแปรนั้น เช่น
x = 5 x |= 3 print(x) # 7 (same as x = x | 3)
ตัวดำเนินการ ^= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยจะนำค่าในตัวแปรนั้นไปดำเนินการด้วยตัวดำเนินการ ^ (XOR) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้ตัวแปรนั้น เช่น
x = 10 x ^= 6 print(x) # 12 (same as x = x ^ 6)
ตัวดำเนินการ >>= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยจะนำค่าในตัวแปรนั้นไปดำเนินการด้วยตัวดำเนินการ >> (Zero fill left shift) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้ตัวแปรนั้น เช่น
x = 10 x >>= 6 print(x) # 0 (same as x = x >> 6)
ตัวดำเนินการ <<= ใช้สำหรับกำหนดค่าให้กับตัวแปรใด ๆ โดยจะนำค่าในตัวแปรนั้นไปดำเนินการด้วยตัวดำเนินการ << (Signed right shift) กับจำนวนที่อยู่หลังเครื่องหมายก่อน แล้วค่อยกำหนดค่าให้ตัวแปรนั้น เช่น
x = 10 x <<= 6 print(x) # 640 (same as x = x << 6)
Comparison Operators ตัวดำเนินการด้านการเปรียบเทียบ
เป็นตัวดำเนินการที่ใช้สำหรับการเปรียบเทียบค่า 2 ค่า โดยจะคืนค่าเป็น True หรือ False ซึ่งมีตัวดำเนินการในกลุ่ม 6 ตัว ดังนี้
ตัวดำเนินการ == ( Equal ) ใช้ตรวจสอบว่าตัวแปร 2 ตัวมีค่าเท่ากันหรือไม่ เช่น
x = 10 y = 20 print(x == y) # False
ตัวดำเนินการ != ( Not equal ) ใช้ตรวจสอบว่าตัวแปร 2 ตัวมีค่าไม่เท่ากันใช่หรือไม่ เช่น
x = 10 y = 20 print(x != y) # True
ตัวดำเนินการ > ( Greater than ) ใช้ตรวจสอบว่าตัวแปรด้านซ้ายมีค่ามากกว่าตัวแปรด้านขวาใช่หรือไม่ เช่น
x = 10 y = 20 print(x > y) # False
ตัวดำเนินการ < ( Less than ) ใช้ตรวจสอบว่า ตัวแปรด้านซ้ายมีค่าน้อยกว่าตัวแปรด้านขวาใช่หรือไม่ เช่น
x = 10 y = 20 print(x < y) # True
ตัวดำเนินการ >= ( Greater than or equal to ) ใช้ตรวจสอบว่า ตัวแปรด้านซ้ายมีค่ามากกว่าหรือเท่ากับตัวแปรด้านขวาหรือไม่ เช่น
x = 10 y = 20 print(x >= y) # False
ตัวดำเนินการ <= ( Less than or equal to ) ใช้ตรวจสอนว่า ตัวแปรด้านซ้ายมีค่าน้อยกว่าหรือเท่ากับตัวแปรด้านขวาหรือไม่ เช่น
x = 10 y = 20 print(x <= y) # True
Logical Operators ตัวดำเนินการด้านตรรกะ
Logical Operators ตัวดำเนินการด้านตรรกะ ใช้สำหรับเชื่อมและตรวจสอบเงื่อนไขหลาย ๆ เงื่อนไข แล้วคืนค่ากลับมาเป็นค่าบูลลีน True หรือ False ซึ่งมีตัวดำเนินการในกลุ่ม 3 ตัว ดังนี้
ตัวดำเนินการ and ใช้เปรียบเทียบสเตทเม้นท์ตั้งแต่สองสเตทเม้นท์ขึ้นไป จะคืนค่าเป็น True ในกรณีที่สเตทเม้นท์ทั้งหมดเป็น True เท่านั้น นอกเหนือจากนั้นจะคืนค่าเป็น False เช่น
x = 20 y = 30 print(x == 20 and y > 24) # True print(x < 20 and y > 20) # False
ตัวดำเนินการ or ใช้เปรียบเทียบสเตทเม้นท์ตั้งแต่สองสเตทเม้นท์ขึ้นไป จะคืนค่าเป็น True ในกรณีที่สเตทเม้นท์ใดสเตทเม้นท์หนึ่งเป็น True ถ้าทุกสเตทเม้นท์เป็น False จะคืนค่าเป็น False เช่น
x = 20 y = 30 print(x == 20 or y > 24) # True print(x < 20 or y > 40) # False
ตัวดำเนินการ not จะเปลี่ยนค่าจาก True เป็น False จาก False เป็น True เช่น
x = 20 y = 30 print(not(x == 20)) # False print(not(y > 40)) # True
Identity operators ตัวดำเนินการด้านเอกลักษณ์
Identity operators ตัวดำเนินการด้านเอกลักษณ์ ใช้สำหรับเปรียบเทียบ Object ว่าเป็น Object เดียวกันหรือไม่ โดยต้องอยู่ในตำแหน่งหน่วยความจำเดียวกันด้วย มีตัวดำเนินการในกลุ่ม 2 ตัว ดังนี้
ตัวดำเนินการ is ใช้เปรียบเทียบตัวแปร 2 ตัว ว่าเป็น Object เดียวกันหรือไม่ โดยจะคืนค่าเป็ฺน True ถ้าตัวแปรทั้งสองตัวเป็นออบเจ็กต์เดียวกัน เช่น
x = ["Python", "Java"] y = ["Python", "Java"] z = x print(x is z) # True # คืนค่าเป็น True เพราะ z กับ x ถือเป็นออบเจ็กต์เดียวกัน เพราะถูกกำหนดให้ z = x print(x is y) # False # คืนค่าเป็น False เพราะ x ไม่ใช่ออบเจ็กต์เดียวกันกับ y ถึงแม้จะมีข้อมูลเหมือนกันก็ตาม
ตัวดำเนินการ is not ใช้เปรียบเทียบตัวแปร 2 ตัว ว่าเป็น Object เดียวกันหรือไม่ โดยจะคืนค่าเป็น True ถ้าตัวแปรทั้ง 2 ตัว ไม่ใช่ออบเจ็กต์เดียวกัน เช่น
x = ["Python", "Java"] y = ["Python", "Java"] z = x print(x is not z) # False # คืนค่าเป็น False เพราะ z กับ x ถือเป็นออบเจ็กต์เดียวกัน เพราะถูกกำหนดให้ z = x print(x is not y) # True # คืนค่าเป็น True เพราะ x ไม่ใช่ออบเจ็กต์เดียวกันกับ y ถึงแม้จะมีข้อมูลเหมือนกันก็ตาม
Membership operators ตัวดำเนินการที่ใช้ตรวจสอบการเป็นสมาชิก
Membership operators ตัวดำเนินการที่ใช้ตรวจสอบการเป็นสมาชิก ใช้ตรวจสอบว่ามีค่าที่เราต้องการอยู่ในออบเจ็กต์ปลายทางหรือไม่ ซึ่งมีตัวดำเนินการในกลุ่ม 2 ตัว ดังนี้
ตัวดำเนินการ in ใช้ตรวจสอบว่ามีค่าที่เราต้องการอยู่ในออบเจ็กต์ปลายทางหรือไม่ โดยจะคืนค่าเป็น True ในกรณีที่มีค่าที่เราระบุอยู่ในออบเจ็กต์ปลายทาง เช่น
x = ["Python", "Swift"] print("Python" in x) # True # คืนค่าเป็น True เพราะมีคำว่า "Python" อยู่ในตัวแปร x
ตัวดำเนินการ not in ใช้ตรวจสอบว่า ไม่มีค่าที่เราระบุ อยู่ในออบเจ็กต์ปลายทางใช่หรือไม่ โดยจะคืนค่าเป็น True ในกรณีที่ไม่มีค่าที่เราระบุอยู่ในออบเจ็กต์ปลายทาง เช่น
x = ["Python", "Swift"] print("Kotlin" not in x) # True # คืนค่าเป็น True เพราะไม่มีคำว่า "Kotlin" อยู่ในตัวแปร x
Bitwise operators ตัวดำเนินการระดับบิต
Bitwise operators ตัวดำเนินการระดับบิต ใช้สำหรับเปรียบเทียบตัวเลข (ฐานสอง) โดยเมื่อเรานำมาใช้กับตัวเลขจำนวนเต็ม ตัวเลขดังกล่าวจะถูกแปลงเป็นตัวเลขฐานสองก่อนแล้วค่อยนำไปดำเนินการด้วยตัวดำเนินการนั้น ๆ ในแบบพีชคณิตบูลีน แล้วนำผลลัพธ์ที่ได้มาแปลงกลับเป็นตัวเลขฐานสิบอีกที มีตัวดำเนินการในกลุ่ม 6 ตัว ดังนี้
ตัวดำเนินการ & (AND) จะนำค่าทั้งสองค่ามาแปลงเป็นตัวเลขฐานสอง แล้วนำมาทำพีชคณิตบูลีนแบบ AND เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
x = 5 y = 3 print(x & y) # 1
ตัวดำเนินการ | (OR) จะนำค่าทั้งสองค่ามาแปลงเป็นตัวเลขฐานสอง แล้วนำมาทำพีชคณิตบูลีนแบบ OR เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
x = 5 y = 3 print(x | y) # 7
ตัวดำเนินการ ^ (XOR) จะนำค่าทั้งสองค่ามาแปลงเป็นตัวเลขฐานสอง แล้วนำมาทำพีชคณิตบูลีนแบบ XOR เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
x = 5 y = 3 print(x ^ y) # 6
ตัวดำเนินการ ~ (NOT) จะนำค่าจากตัวแปรมาแปลงเป็นตัวเลขฐานสอง แล้วนำมาทำพีชคณิตบูลีนแบบ NOT เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
y = 3 print(~y) # -4
ตัวดำเนินการ << ( Zero fill left shift ) จะนำค่าของตัวแปรที่อยู่ด้านหน้าเครื่องหมายมาแปลงเป็นตัวเลขฐานสอง แล้วเลื่อนค่าบิตไปทางซ้าย ตามจำนวนค่าของตัวแปรที่อยู่ด้านหลังเครื่องหมาย เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
x = 5 y = 3 print(x << y) # 40 # นำเลข 5 (ตัวแปร x) มาแปลงเป็นตัวเลขฐานสอง แล้วเลื่อนบิตไปด้านซ้าย 3 ตำแหน่ง (ตัวแปร y)
ตัวดำเนินการ >> ( Signed right shift ) จะนำค่าของตัวแปรที่อยู่ด้านหน้าเครื่องหมายมาแปลงเป็นตัวเลขฐานสอง แล้วเลื่อนค่าบิตไปทางขวา ตามจำนวนค่าของตัวแปรที่อยู่ด้านหลังเครื่องหมาย เมื่อได้ผลลัพธ์แล้วจึงแปลงกลับเป็นตัวเลขฐานสิบ เช่น
x = 5 y = 3 print(x >> y) # 0 # นำเลข 5 (ตัวแปร x) มาแปลงเป็นตัวเลขฐานสอง แล้วเลื่อนบิตไปด้านขวา 3 ตำแหน่ง (ตัวแปร y)