Python ตอนที่ 65 ตัวดำเนินการ

Operator หรือตัวดำเนินการ ใช้สำหรับดำเนินการกับตัวแปรหรือค่าต่าง ๆ เช่น บวก ลบ คูณ หาร กำหนดค่า เปรียบเทียบค่า เป็นต้น

ภาษา Python แบ่งตัวดำเนินการออกเป็น 7 กลุ่ม ดังนี้

  1. Arithmetic operators ตัวดำเนินการทางคณิตศาสตร์
  2. Assignment operators ตัวดำเนินการด้านการกำหนดค่า
  3. Comparison operators ตัวดำเนินการด้านการเปรียบเทียบ
  4. Logical operators ตัวดำเนินการด้านตรรกะ
  5. Identity operators ตัวดำเนินการด้านเอกลักษณ์
  6. Membership operators ตัวดำเนินการที่ใช้ตรวจสอบการเป็นสมาชิก
  7. 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)