ตัวดำเนินการในภาษาไพธอน

ตัวดำเนินการในภาษาไพธอน

บทความนี้อธิบายเรื่องตัวดำเนินการในภาษาไพธอน

YouTube Video

ตัวดำเนินการในภาษาไพธอน

ภาษาไพธอนมีตัวดำเนินการหลายประเภทซึ่งสามารถแบ่งออกได้ดังนี้ เราจะอธิบายตัวดำเนินการที่เป็นตัวแทนในแต่ละประเภท

ตัวดำเนินการทางคณิตศาสตร์

ตัวดำเนินการทางคณิตศาสตร์คือตัวดำเนินการที่ใช้ในการคำนวณกับตัวเลข

ตัวดำเนินการ ความหมาย ตัวอย่าง
+ การบวก 3 + 2 → 5
- การลบ 3 - 2 → 1
* การคูณ 3 * 2 → 6
/ การหาร (ผลลัพธ์เป็นทศนิยมเสมอ) 3 / 2 → 1.5
// การหารปัดเศษลง 3 // 2 → 1
% เศษเหลือ (โมดูโล) 3 % 2 → 1
** ยกกำลัง 3 ** 2 → 9
 1a = 10
 2b = 3
 3
 4print(f"{a} + {b} = {a + b}")     # Addition
 5print(f"{a} - {b} = {a - b}")     # Subtraction
 6print(f"{a} * {b} = {a * b}")     # Multiplication
 7print(f"{a} / {b} = {a / b}")     # Division (float)
 8print(f"6 / 3 = {6 / 3}")         # Division (float)
 9print(f"{a} // {b} = {a // b}")   # Floor Division
10print(f"{a} % {b} = {a % b}")     # Modulo (remainder)
11print(f"{a} ** {b} = {a ** b}")   # Exponentiation
  • นอกจากการดำเนินการเลขคณิตพื้นฐานทั้งสี่แล้ว Python ยังมีตัวดำเนินการสำหรับการหาร (/), การหารปัดเศษลงเป็นจำนวนเต็ม (//), การหารเอาเศษ (%), และการยกกำลัง (**) การหารจะส่งคืนค่าประเภททศนิยม แม้ว่าจะหารจำนวนเต็มก็ตาม

ตัวดำเนินการการกำหนดค่า

ตัวดำเนินการกำหนดค่าใช้เพื่อกำหนดค่าให้กับตัวแปร

ตัวดำเนินการ ความหมาย ตัวอย่าง
= กำหนดค่า x = 5
+= บวกแล้วกำหนดค่า x += 2 → x = x + 2
-= ลบแล้วกำหนดค่า x -= 2 → x = x - 2
*= คูณแล้วกำหนดค่า x *= 2 → x = x * 2
/= หารแล้วกำหนดค่า x /= 2 → x = x / 2
//= การหารปัดเศษลง x //= 2 → x = x // 2
%= กำหนดค่าเศษเหลือ x %= 2 → x = x % 2
**= กำหนดค่ายกกำลัง x **= 2 → x = x ** 2
&= กำหนดค่าโดยใช้ AND x &= 0b1010 → x = x & 0b1010
|= กำหนดค่าโดยใช้ OR x | = 0b0011→x = x | 0b0011
^= กำหนดค่าโดยใช้ XOR x ^= 0b0101 → x = x ^ 0b0101
<<= กำหนดค่าหลังจากเลื่อนบิตไปทางซ้าย x <<= 2 → x = x << 2
>>= กำหนดค่าหลังจากเลื่อนบิตไปทางขวา x >>= 1 → x = x >> 1
:= นิพจน์กำหนดค่า (walrus operator) if (n := len(data)) > 10: → กำหนดค่าให้ n ขณะประเมินเงื่อนไข
 1x = 5           # x = 5
 2
 3x += 3          # x = x + 3
 4x -= 2          # x = x - 2
 5x *= 4          # x = x * 4
 6x /= 3          # x = x / 3
 7x //= 2         # x = x // 2
 8x %= 5          # x = x % 5
 9x **= 3         # x = x ** 3
10
11x = 0b1100      # x = 0b1100 (12)
12
13x &= 0b1010     # x = x & 0b1010
14x |= 0b0011     # x = x | 0b0011
15x ^= 0b0101     # x = x ^ 0b0101
16x <<= 2         # x = x << 2
17x >>= 1         # x = x >> 1
18
19print(bin(x))   # Display in binary
20print(x)        # Display in decimal
21
22# Walrus operator
23if (n := len("hello")) > 3:
24    print(f"Length is {n}")
  • ตัวดำเนินการกำหนดค่าอนุญาตให้รวมการกำหนดค่ามาตรฐานกับตัวดำเนินการต่างๆ เพื่อกำหนดผลลัพธ์
  • Walrus operator (:=) เป็นนิพจน์กำหนดค่าซึ่งมีใน Python 3.8 และเวอร์ชันถัดไป
  • การกำหนดค่ามาตรฐานสามารถใช้ได้เฉพาะเป็นคำสั่งเท่านั้น แต่ walrus operator อนุญาตให้กำหนดค่าภายในนิพจน์ได้

ตัวดำเนินการเปรียบเทียบ

ตัวดำเนินการเปรียบเทียบใช้เปรียบเทียบค่าและส่งคืนค่า True หรือ False

ตัวดำเนินการ ความหมาย ตัวอย่าง
== เท่ากัน 3 == 3 → True
!= ไม่เท่ากัน 3 != 4 → True
> มากกว่า 5 > 2
< น้อยกว่า 5 < 2
>= มากกว่าหรือเท่ากับ 5 >= 5
<= น้อยกว่าหรือเท่ากับ 3 <= 4
 1a = 10
 2b = 20
 3
 4# Equal to (==)
 5print(f"{a} == {b} -> {a == b}")      # False: a and b are not equal
 6print(f"3 == 3.0 -> {3 == 3.0}")      # True: int and float with the same value are equal
 7print(f"3 == '3' -> {3 == '3'}")      # False: different types (int vs str)
 8print(f"True == 1 -> {True == 1}")    # True: True is equivalent to 1
 9print(f"False == 0 -> {False == 0}")  # True: False is equivalent to 0
10print(f"None == 0 -> {None == 0}")    # False: None is not equal to 0
11
12# Not equal to (!=)
13print(f"{a} != {b} -> {a != b}")      # True: a and b are not equal
14
15# Greater than (>)
16print(f"{b} > {a} -> {b > a}")        # True: 20 > 10
17
18# Less than (<)
19print(f"{a} < {b} -> {a < b}")        # True: 10 < 20
20
21# Greater than or equal to (>=)
22print(f"{a} >= 10 -> {a >= 10}")      # True: a is greater than or equal to 10
23
24# Less than or equal to (<=)
25print(f"{a} <= 10 -> {a <= 10}")      # True: a is less than or equal to 10
  • ตัวดำเนินการเปรียบเทียบจะเปรียบเทียบสองค่าเพื่อตรวจสอบลำดับหรือความเท่าเทียมกัน และส่งคืน True หรือ False เป็นผลลัพธ์
  • ใน Python ควรระวังเมื่อเปรียบเทียบชนิดข้อมูลที่ต่างกัน บางประเภทของข้อมูลสามารถเปรียบเทียบกันได้ แต่ผลลัพธ์อาจไม่ได้เป็นไปตามที่คาดไว้

ตัวดำเนินการเชิงตรรกะ

ตัวดำเนินการทางตรรกะใช้เพื่อรวมการแสดงออกทางตรรกะ

ตัวดำเนินการ ความหมาย ตัวอย่าง
and คืนค่า True หากทั้งสองเป็น True True and False → False
or คืนค่า True หากอย่างน้อยหนึ่งเป็น True True or False → True
not กลับค่าตรรกะ (Boolean) ตรงข้าม not True → False
1x = 10
2print(x > 5 and x < 20)  # True
3print(x < 5 or x > 20)   # False
4print(not x == 10)       # False
  • and เป็นตัวดำเนินการตรรกะที่คืนค่า True ก็ต่อเมื่อเงื่อนไขทั้งทางซ้ายและขวาเป็น True
  • or เป็นตัวดำเนินการตรรกะที่คืนค่า True หากเงื่อนไขทางซ้ายหรือขวาเป็น True อย่างใดอย่างหนึ่ง
  • not เป็นตัวดำเนินการตรรกะที่สลับค่าความจริงของเงื่อนไข ถ้าเป็นจริงจะกลายเป็นเท็จ และถ้าเป็นเท็จก็จะกลายเป็นจริง

ลำดับความสำคัญของตัวดำเนินการทางตรรกะ

ตัวดำเนินการมีลำดับความสำคัญ นี่คือกฎที่กำหนดว่าจะประเมินตัวดำเนินการใดก่อนในนิพจน์ ตัวดำเนินการทางตรรกะจะถูกประเมินตามลำดับ: not, and, แล้ว or

1result = True or False and False
2print(result)  # True
3
4result = (True or False) and False
5print(result)  # False

たとえば、

ในตัวอย่างแรก and จะถูกประเมินก่อน ดังนั้น False and False จะเป็น False และผลลัพธ์คือ True or False จะเป็น True คุณสามารถเปลี่ยนลำดับการประเมินได้โดยใช้วงเล็บ ตามที่แสดงในตัวอย่างที่สอง

ตัวดำเนินการบิต

ตัวดำเนินการระดับบิตใช้สำหรับการทำงานในระดับบิต

ตัวดำเนินการ ความหมาย ตัวอย่าง
& Bitwise AND 5 & 3 → 1
| Bitwise OR 5 | 3→7
^ Bitwise exclusive OR (XOR) 5 ^ 3 → 6
~ Bitwise NOT ~5 → -6
<< เลื่อนบิตไปทางซ้าย (Left shift) 5 << 1 → 10
>> เลื่อนบิตไปทางขวา (Right shift) 5 >> 1 → 2
 1# Sample code for bitwise operators
 2
 3# Define two integers
 4a = 5  # Binary: 0101
 5b = 3  # Binary: 0011
 6
 7# Bitwise AND
 8result_and = a & b  # Binary: 0001 -> Decimal: 1
 9print(f"{a} & {b} = {result_and}")
10
11# Bitwise OR
12result_or = a | b  # Binary: 0111 -> Decimal: 7
13print(f"{a} | {b} = {result_or}")
14
15# Bitwise XOR
16result_xor = a ^ b  # Binary: 0110 -> Decimal: 6
17print(f"{a} ^ {b} = {result_xor}")
18
19# Bitwise NOT (inverting bits)
20result_not = ~a  # Binary: -(0101 + 1) -> Decimal: -6
21print(f"~{a} = {result_not}")
22
23# Left shift
24shift_left = a << 1  # Binary: 1010 -> Decimal: 10
25print(f"{a} << 1 = {shift_left}")
26
27# Right shift
28shift_right = a >> 1  # Binary: 0010 -> Decimal: 2
29print(f"{a} >> 1 = {shift_right}")
  • คุณสามารถดำเนินการทางบิต AND, OR, XOR, NOT และการเลื่อนบิตได้ คุณยังสามารถรวมกับตัวดำเนินการกำหนดค่าเช่น &= ได้อีกด้วย

ตัวดำเนินการสมาชิก

ตัวดำเนินการสมาชิกใช้ร่วมกับชุดข้อมูล เช่น ลิสต์และดิกชันนารี

 1x = [1, 2, 3]
 2y = 2
 3z = 4
 4
 5print("y in x : ", y in x)  # Result is True
 6print("z in x : ", z in x)  # Result is False
 7
 8print("y not in x : ", y not in x)  # Result is False
 9print("z not in x : ", z not in x)  # Result is True
10
11text = "hello world"
12print("'world' in 'hello world' : ",      "world" in text)      # True
13print("'python' not in 'hello world' : ", "python" not in text) # True
  • ตัวดำเนินการ in ใช้เพื่อตรวจสอบว่าค่าที่ระบุ มีอยู่ใน ลำดับเช่น list หรือ string หรือคอลเลกชันเช่น dictionary หรือไม่
  • ตัวดำเนินการ not in ใช้เพื่อตรวจสอบว่าค่าที่ระบุ ไม่มีอยู่ใน ลำดับหรือคอลเลกชันหรือไม่

ตัวดำเนินการอัตลักษณ์

ตัวดำเนินการตรวจสอบเอกลักษณ์ใช้เพื่อตรวจสอบเอกลักษณ์ของวัตถุ

 1x = [1, 2, 3]
 2y = x
 3z = x.copy()
 4
 5print("x is y : ", x is y)  # Result is True
 6print("x is z : ", x is z)  # Result is False
 7
 8print("x is not y : ", x is not y)  # Result is False
 9print("x is not z : ", x is not z)  # Result is True
10
11print("x == y : ", x == y)  # Result is True
12print("x == z : ", x == z)  # Result is True
  • ตัวดำเนินการ is ใช้ตรวจสอบว่าวัตถุทั้งสองเป็น วัตถุเดียวกัน หรือไม่ (คืออ้างถึงตำแหน่งหน่วยความจำเดียวกัน)
  • ตัวดำเนินการ is not ใช้ตรวจสอบว่าวัตถุทั้งสองเป็น คนละวัตถุ หรือไม่
  • ตัวอย่างเช่น x is y แตกต่างจาก x == y เพราะตรวจสอบ ตัวตนของวัตถุ ไม่ใช่ ค่าความเท่าเทียมกัน

การตรวจสอบชนิดข้อมูล (Type Checking)

ในภาษา Python คุณจะใช้ฟังก์ชัน isinstance() เพื่อตรวจสอบว่าค่าหนึ่งเป็นชนิดที่กำหนดหรือไม่ คุณยังสามารถใช้ฟังก์ชัน type() เพื่อตรวจสอบชนิดที่แน่นอนของตัวแปร แม้ว่าสิ่งเหล่านี้จะไม่ใช่ตัวดำเนินการ แต่ก็เป็นกลไกพื้นฐานสำหรับการตรวจสอบชนิดข้อมูล

 1x = 10
 2print(isinstance(x, int))  # True
 3
 4y = "hello"
 5print(isinstance(y, str))  # True
 6
 7z = [1, 2, 3]
 8print(isinstance(z, list))  # True
 9
10print(type(10))        # <class 'int'>
11print(type("hello"))   # <class 'str'>
12
13print("isinstance(3, int) : ", isinstance(3, int))  # True
14print("type(3) is int : ", type(3) is int)          # True
15print("type(True) is bool : ", type(True) is bool)  # True
  • isinstance() เป็นฟังก์ชันที่ตรวจสอบว่าวัตถุนั้นเป็นอินสแตนซ์ของคลาสที่ระบุหรือคลาสย่อยของมันหรือไม่
  • type() เป็นฟังก์ชันที่ส่งคืนชนิด (class) ที่แน่นอนของวัตถุ โดยปกติจะใช้เมื่อคุณต้องการเปรียบเทียบชนิดข้อมูลอย่างเคร่งครัด
  • isinstance() จะพิจารณาความสัมพันธ์การสืบทอดคลาส ในขณะที่ type() ตรวจสอบเฉพาะการตรงกันแบบเป๊ะๆ

สรุป

เมื่อใช้งานตัวดำเนินการแต่ละตัว คุณต้องเลือกใช้อย่างเหมาะสมตามวัตถุประสงค์และประเภท เนื่องจาก Python เป็นภาษาที่มีการกำหนดประเภทแบบไดนามิก ผลลัพธ์ของการดำเนินการอาจเปลี่ยนแปลงไปตามประเภทของค่าที่คำนวณ

คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย

YouTube Video