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

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

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

YouTube Video

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

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

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

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

ตัวดำเนินการ ความหมาย ตัวอย่าง
+ การบวก 3 + 25
- การลบ 3 - 21
* การคูณ 3 * 26
/ การหาร (ผลลัพธ์เป็นทศนิยมเสมอ) 3 / 21.5
// การหารปัดเศษลง 3 // 21
% เศษเหลือ (โมดูโล) 3 % 21
** ยกกำลัง 3 ** 29
 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 += 2x = x + 2
-= ลบแล้วกำหนดค่า x -= 2x = x - 2
*= คูณแล้วกำหนดค่า x *= 2x = x * 2
/= หารแล้วกำหนดค่า x /= 2x = x / 2
//= การหารปัดเศษลง x //= 2x = x // 2
%= กำหนดค่าเศษเหลือ x %= 2x = x % 2
**= กำหนดค่ายกกำลัง x **= 2x = x ** 2
&= กำหนดค่าโดยใช้ AND x &= 0b1010x = x & 0b1010
|= กำหนดค่าโดยใช้ OR x | = 0b0011x = x | 0b0011
^= กำหนดค่าโดยใช้ XOR x ^= 0b0101x = x ^ 0b0101
<<= กำหนดค่าหลังจากเลื่อนบิตไปทางซ้าย x <<= 2x = x << 2
>>= กำหนดค่าหลังจากเลื่อนบิตไปทางขวา x >>= 1x = 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 == 3True
!= ไม่เท่ากัน 3 != 4True
> มากกว่า 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 FalseFalse
or คืนค่า True หากอย่างน้อยหนึ่งเป็น True True or FalseTrue
not กลับค่าตรรกะ (Boolean) ตรงข้าม not TrueFalse
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 & 31
| Bitwise OR 5 | 37
^ Bitwise exclusive OR (XOR) 5 ^ 36
~ Bitwise NOT ~5-6
<< เลื่อนบิตไปทางซ้าย (Left shift) 5 << 110
>> เลื่อนบิตไปทางขวา (Right shift) 5 >> 12
 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