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)