ตัวดำเนินการในภาษาไพธอน
บทความนี้อธิบายเรื่องตัวดำเนินการในภาษาไพธอน
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 ด้วย