Python – Operators

ตัวดำเนินการ(Operator)

ตัวดำเนินการ(operator) เป็นสัญลักษณ์ที่ใช้สำหรับดำเนินการทางคณิตศาสตร์หรือทางตรรกะ โดยตัวดำเนินการ(operators) นั้นจะถูกใช้งานร่วมกันกับตัวถูกดำเนินการ(operand)
ตัวอย่างการใช้งาน

print( 2+3 )
# โปรแกรมจะทำการปรินท์ค่า 5 ออกมา
# โดยเครื่องหมาย "+" คือตัวดำเนินการ(operator)สำหรับการดำเนินการบวกเลข และตัวเลข 2, 3 คือตัวถูกดำเนินการ(operand) ส่วนผลลัพท์ของการดำเนินการนี้ก็คือ 5

ตัวดำเนินการประเภทต่างๆ มีดังนี้

1. ตัวดำเนินการทางคณิตศาสตร์(Arithmetic operators)

ตัวดำเนินการประเภทนี้ใช้สำหรับการดำเนินการทางคณิตศาสตร์ เช่น การบวก(+), การลบ(-),  การคูณ(*), การหาร(/)

ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
+ ทำการบวกข้อมูลที่อยู่ด้านซ้ายและขวาของตัวดำเนินการ “+”
หรือเลขจำนวนบวก
2+3
+2
ทำการนำข้อมูลด้านขวาไปลบออกจากข้อมูลด้านซ้ายของตัวดำเนินการ “-”
หรือ เลขจำนวนลบ
3-2
-2
* ทำการคูณระหว่างข้อมูลที่อยู่ด้านซ้ายและขวาของตัวดำเนินการ “*” 2*3
/ ทำการหารข้อมูลด้านซ้ายด้วยข้อมูลด้านขวาของตัวดำเนินการ “/” 2/3
% ทำการหาเศษจากการที่ได้การหารข้อมูลด้านซ้ายด้วยข้อมูลด้านขวาของตัวดำเนินการ “%”  3%2
// ทำการหาค่าที่ได้จากการหารข้อมูลด้านซ้ายด้วยข้อมูลทางด้านขวาของตัวดำเนินการ “//” โดยไม่คิดเศษของข้อมูล 3//2
** ทำการคำนวณข้อมูลที่ได้จากข้อมูลด้านซ้าย ยกกำลังด้วยข้อมูลทางด้านขวาของตัวดำเนินการ “**” 2**3
(2 ยกกำลัง 3)

ตัวอย่างการใช้งาน

x = 8
y = 2

print( x + y )
# โปรแกรมจะทำการปรินต์ค่า 10 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) + ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x - y )
# โปรแกรมจะทำการปรินต์ค่า 6 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) - ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x * y )
# โปรแกรมจะทำการปรินต์ค่า 16 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) * ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x / y )
# โปรแกรมจะทำการปรินต์ค่า 4 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) / ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x % y )
# โปรแกรมจะทำการปรินต์ค่า 0 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) % ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x // y )
# โปรแกรมจะทำการปรินต์ค่า 4 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) // ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

print( x ** y )
# โปรแกรมจะทำการปรินต์ค่า 64 ซึ่งคำนวณจากข้อมูลทางด้านซ้ายของตัวดำเนินการ(8) ** ข้อมูลทางด้านขวาของตัวดำเนินการ(2)

2. ตัวดำเนินการในการเปรียบเทียบ(Comparision(Relational) operators)

ตัวดำเนินการเพื่อเปรียบเทียบใช้สำหรับการเปรียบเทียบค่าของข้อมูล โดยผลจากการเปรียบเทียบจะทำการคืนค่าเป็นจริง(True) หรือ เท็จ(False) ตามแต่เงื่อนไขระบุ

ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
> เครื่องหมายมากกว่า โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการด้านซ้าย มีค่ามากกว่า ตัวถูกดำเนินการทางด้านขวา 3 > 2
จริง(True)
< เครื่องหมายน้อยกว่า โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการด้านขวา มีค่ามากกว่า ตัวถูกดำเนินการทางด้านซ้าย 3 < 2
เท็จ(False)
== เครื่องหมายเท่ากัน โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการทางด้านซ้ายและด้านขวามีค่าเท่ากัน 3 == 2
เท็จ(False)
!= เครื่องหมายไม่เท่ากัน โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการด้านซ้ายและด้านขวามีค่าไม่เท่ากัน 3 != 2
จริง(True)
>= เครื่องหมายมากกว่าหรือเท่ากัน โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการด้านซ้ายมีค่ามากกว่าหรือเท่ากันกับตัวถูกดำเนินการทางด้านขวา 3 >= 2
จริง(True)
<= เครื่องหมายน้อยกว่าหรือเท่ากัน โดยผลจะเป็นจริงก็ต่อเมื่อ ตัวถูกดำเนินการด้านขวามีค่ามากกว่าหรือเท่ากันกับตัวถูกดำเนินการทางด้านซ้าย 3 <= 2
เท็จ(False)

ตัวอย่างการใช้งาน

x = 11
y = 5

print( x > y )
# โปรแกรมจะทำการปรินต์ค่า True

print( x < y )
# โปรแกรมจะทำการปรินต์ค่า False

print( x == y )
# โปรแกรมจะทำการปรินต์ค่า False

print( x != y )
# โปรแกรมจะทำการปรินต์ค่า True

print( x >= y )
# โปรแกรมจะทำการปรินต์ค่า True

print( x <= y )
# โปรแกรมจะทำการปรินต์ค่า False

3. ตัวดำเนินการทางตรรกะ(Logical(Boolean) operators)

ตัวดำเนินการทางตรรกะ(Logical operators) เพื่อตรวจสอบว่าข้อมูลเป็นไปตามเงื่อนไขที่กำหนดไว้หรือไม่ ถ้าตรงตามเงื่อนไขที่กำหนดก็จะคืนค่าเป็นจริง(True) หรือหากไม่ตรงตามเงื่อนไขกำหนดจะคืนค่าเป็นเท็จ(False) โดยตัวดำเนินการรูปแบบนี้เช่น and, or และ not

ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
and ผลจะเป็นจริง ก็ต่อเมื่อ ตัวถูกดำเนินการทั้งสองด้านของตัวดำเนินการ and มีค่าเป็นจริง (2 > 1) and (3 > 1)
จริง(True)
or ผลจะเป็นจริง ก็ต่อเมื่อ ตัวถูกดำเนินการตัวใดตัวหนึ่งจากทั้งสองด้านของตัวดำเนินการ or มีค่าเป็นจริง (5 > 1) or (2 > 3)
จริง(True)
not ผลจะเป็นจริง ก็ต่อเมื่อ ตัวถูกดำเนินการมีค่าเป็นเท็จ( เป็นการสลับระหว่างข้อมูลที่เป็นจริงและเป็นเท็จ) not (2>1)
เท็จ(False)

ตัวอย่างการใช้งาน

x = True
y = False

print( x and y )
# โปรแกรมจะทำการคืนค่า False เพราะโปรแกรมจะคืนค่าจริงก็ต่อเมื่อเงื่อนไขทั้งสองด้านของตัวดำเนินการ(x, y) มีค่าเป็นจริง แต่กรณีนี้มี x เป็นจริงเพียงกรณีเดียว

print( x or y )
# โปรแกรมจะทำการคืนค่า True เพราะโปรแกรมจะคืนค่าจริงก็ต่อเมื่อเงื่อนไขทั้งสองด้านของตัวดำเนินการ(x, y) มีค่าเป็นจริงเพียงเงือนไขใดเงื่อนไขหนึ่ง ในกรณีนี้คือ x เป็นจริง

print( not x )
# โปรแกรมจะทำการคืนค่า False เพราะโปรแกรมจะทำการสลับจากจริงไปเป็นเท็จ หรือจากเท็จไปเป็นจริง โดย x มีค่าเป็นจริงดังนั้นผลที่ได้คือมีค่าเป็นเท็จ

print( not y )
# โปรแกรมจะทำการคืนค่า True เพราะโปรแกรมจะทำการสลับจากเท็จไปเป็นจริง หรือจากจริงไปเป็นเท็จ โดย y มีค่าเป็นเท็จดังนั้นผลที่ได้คือมีค่าเป็นจริง


product_amount = 5  # กำหนดจำนวนชิ้นของสินค้าที่ทำการซื้อ
product_price = 25  # กำหนดราคาของสินค้าแต่ละชิ้น
total_price = (product_amount*product_price) # คำนวณราคารวมของการซื้อสินค้าที่ทำการซื้อ

print( total_price > 90 ) # ตรวจสอบราคารวมของสินค้าว่ามากกว่า 90 บาทหรือไม่
# โปรแกรมคืนค่า True เนื่องจากราคารวมของสินค้าเป็น 125 บาทซึ่งมากกว่า 90 บาท

print( (total_price > 150) and (product_amount>=5) ) 
# โปรแกรมคืนค่า False เนื่องจากการเปรียบเทียบด้านซ้ายของตัวดำเนินการเป็นเท็จ ส่วนการเปรียบเทียบด้านขวาของตัวดำเนินการเป็นจริง ดังนั้นเมื่อใช้ตัวดำเนินการ and จึงทำให้ผลการดำเนินการเป็นเท็จ(False)
# ตรวจสอบสองกรณี โดยเงื่อนไขด้านซ้ายของตัวดำเนินการ ตรวจสอบว่าราคารวมของสินค้าว่ามากกว่า 150 บาทหรือไม่ ส่วนเงื่อนไขด้านขวาของตัวดำเนินการตรวจสอบว่าจำนวนชิ้นของสิ้นค้าที่ซื้อเป็นจำนวนตั้งแต่ 5 ชิ้นขึ้นไป ซึ่งในตัวอย่างนี้เงื่อนไขด้านซ้ายของตัวดำเนินการเป็นเท็จ ส่วนเงื่อนไขด้านขวาของตัวดำเนินการเป็นจริง (False and True) ทำให้ผลของตรรกะนี้เป็นเท็จ เนื่องจากใช้ตัวดำเนินการ and นั้นหากเงื่อนไขใดเงื่อนไขหนึ่งเป็นเท็จ ก็จะทำให้ตรรกะนี้กลายเป็นเท็จ

print( (total_price > 150) or (product_amount>=5) ) 
# โปรแกรมคืนค่า True เนื่องจากเงื่อนไขด้านซ้ายของตัวดำเนินการเป็นเท็จ เงื่อนไขด้านขวาของตัวดำเนินการเป็นจริง ดังนั้นเมื่อใช้ตัวดำเนินการ or จึงทำให้ผลการดำเนินการเป็นจริง(True)
# ตรวจสอบสองกรณี โดยเงื่อนไขด้านซ้ายของตัวดำเนินการ ตรวจสอบว่าราคารวมของสินค้าว่ามากกว่า 150 บาทหรือไม่ ส่วนเงื่อนไขด้านขวาของตัวดำเนินการตรวจสอบว่าจำนวนชิ้นของสิ้นค้าที่ซื้อเป็นจำนวนตั้งแต่ 5 ชิ้นขึ้นไป ซึ่งในตัวอย่างนี้เงื่อนไขด้านซ้ายของตัวดำเนินการเป็นเท็จ ส่วนเงื่อนไขด้านขวาของตัวดำเนินการเป็นจริง (False or True) ทำให้ผลของตรรกะนี้เป็นจริง เนื่องจากใช้ตัวดำเนินการ or นั้นหากเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง ก็จะทำให้ตรรกะนี้กลายเป็นจริง

4. ตัวดำเนินการระดับบิต(Bitwise operators)

ตัวดำเนินการที่ใช้ดำเนินการข้อมูลระดับบิต โดยตัวถูกดำเนินการเป็นเหมือน string ของตัวเลขฐานสอง โดยจะดำเนินการในระดับบิต ตัวอย่างเช่น
2 ก็คือ 10 ในเลขฐานสอง ซึ่งคำนวณจาก( (1*21) + (0*20) )
7 ก็คือ 111 ในเลขฐานสอง ซึ่งคำนวณจาก( (1*22) + (1*21) + (1*20) )

ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
ให้ x = 10    (0000 1010 ในเลขฐานสอง)
ให้ y = 4      (0000 0100 ในเลขฐานสอง)
& bitwise AND x & y  = 0    (0000 0000)
| bitwise OR x | y    = 14   (0000 1110)
~ bitwise NOT ~x      = -11  (1111 0101)
^ bitwise XOR x ^ y  =  14   (0000 1110)
>> bitwise right shift x >> 2 = 2    (0000 0010)
<< bitwise left shift x << 2 = 40  (0010 1000)

5. ตัวดำเนินการเพื่อกำหนดค่า(Assignment operators)

ตัวดำเนินการเพื่อกำหนดค่า นั้นใช้เพื่อจะทำการกำหนดค่าให้ตัวแปรต่างๆ เช่น a = 5 คือการกำหนดค่าให้ตัวแปร a ซึ่งอยู่ทางด้านซ้ายของเครื่องหมายดำเนินการ(operator) มีค่าเป็น 5

ตัวดำเนินการ ตัวอย่างการใช้งาน มีค่าเท่ากันกับ
= x = 5 x = 5
+= x += 5 x = x+5
-= x -= 5 x = x-5
*= x *= 5 x = x*5
/= x /=5 x = x/5
%= x%=5 x = x%5
//= x //=5 x = x//5
**= x **=5 x = x**5
&= x&=5 x = x&5
|= x |= 5 x = x | 5
^= x ^=5 x = x^5
>>= x >>=5 x = x>>5
<<= x <<=5 x = x<<5

6. ตัวดำเนินการพิเศษ (Special operators)

ตัวดำเนินการพิเศษใน python นั้นมีสองชนิดคือ ตัวดำเนินการแบบเอกลักษณ์(Identity operator) และ ตัวดำเนินการแบบตรวจสอบการเป็นสมาชิก(Membership operator)

  1. ตัวดำเนินการแบบเอกลักษณ์(Identity operators)
    ตัวดำเนินการแบบเอกลักษณ์ ประเภทนี้ประกอบด้วย is และ is not เป็นตัวดำเนินการที่ใช้สำหรับตรวจสอบว่า ค่าสองค่าใดๆ นั้นถูกเก็บไว้ที่ตำแหน่งหน่วยความจำเดียวกันหรือไม่ โดยตัวแปรสองตัวที่มีค่าเท่ากันนั้น อาจจะไม่จำเป็นต้องชี้ไปที่ตำแหน่งหน่วยความจำเดียวกันก็ได้

    ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
    กำหนดให้ x = True
    is เป็นจริง ก็ต่อเมื่อตัวถูกดำเนินการสองตัวที่ถูกดำเนินการนั้นถูกเก็บไว้ที่หน่วยความจำเดียวกัน x is True
    จริง(True)
    is not เป็นจริง ก็ต่อเมื่อตัวถูกดำเนินการสองตัวที่ถูกดำเนินการนั้นถูกเก็บไว้ที่หน่วยความจำคนละตำแหน่งกัน x is not True
    เท็จ(False)

    ตัวอย่างการใช้งาน

    x1 = 5
    y1 = 5
    x2 = 'Hello'
    y2 = 'Hello'
    x3 = [1,2,3]
    y3 = [1,2,3]
    
    print(x1 is y1)
    # โปรแกรมจะทำการคืนค่า True เพราะทั้ง x1 และ y1 ต่างเป็นเลขจำนวนเต็มและมีค่าเท่ากันอีกทั้งยังชี้ไปยังหน่วยความจำตำแหน่งเดียวกัน เนื่องจากเป็นข้อมูลประเภท integer หากข้อมูลค่าเดียวกันจะชี้ไปที่หน่วยความจำตำแหน่งเดียวกัน
    
    print(x1 is not y1)
    # โปรแกรมจะทำการคืนค่า False เพราะทั้ง x1 และ y1 ต่างเป็นเลขจำนวนเต็มและมีค่าเท่ากันอีกทั้งยังชี้ไปยังหน่วยความจำตำแหน่งเดียวกัน เนื่องจากเป็นข้อมูลประเภท integer หากข้อมูลค่าเดียวกันจะชี้ไปที่หน่วยความจำตำแหน่งเดียวกัน
    
    print(x2 is y2)
    # โปรแกรมจะทำการคืนค่า True เพราะทั้ง x2 และ y2 ต่างเป็น string และมีค่าเท่ากันอีกทั้งยังชี้ไปที่หน่วยความจำตำแหน่งเดียวกัน เนื่องจากเป็นข้อมูลประเภท string หากข้อมูลค่าเดียวกันจะชี้ไปที่หน่วยความจำตำแหน่งเดียวกัน
    
    print(x3 is y3)
    # โปรแกรมจะทำการคืนค่า False เพราะทั้ง x3 และ y3 ต่างเป็นลิสต์ แม้ว่าข้อมูลที่เก็บจะมีค่าเท่ากันแต่เนื่องจากลิสต์เป็นการเก็บข้อมูลประเภทเปลี่ยนแปลงข้อมูลได้(mutable) ดังนั้นตัวแปรสำหรับข้อมูลประเภทลิสต์แต่ละตัวจะเก็บข้อมูลแยกกันคนละตำแหน่งของหน่วยความจำ
  2. ตัวดำเนินการแบบตรวจสอบการเป็นสมาชิก(Membership operator)
    ตัวดำเนินการแบบตรวจสอบการเป็นสมาชิก ประเภทนี้ประกอบด้วย in, not in ซึ่งใช้เพื่อจะทดสอบค่าหรือตัวแปร ว่าข้อมูลดังกล่าวนั้นมีอยู่จริงในชุดข้อมูลที่เก็บหรือไม่(string, ลิสต์, tuple, เซต, ดิกชันนารี) โดยในดิกชันนารีนั้นเราสามารถตรวจสอบเพียงแค่ว่า มี key อยู่ในดิกชันนารีหรือไม่ ไม่สามารถทดสอบตัวข้อมูลที่เก็บได้เหมือนรูปแบบการเก็บข้อมูลชนิดอื่นๆ

    ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
    กำหนดให้ x = [10, 8, 5]
    in จะเป็นจริง ก็ต่อเมื่อ ข้อมูลนั้นถูกพบในชุดข้อมูล 5 in x
    จริง(True)
    not in จะเป็นจริง ก็ต่อเมื่อ ข้อมูลนั้น ไม่ถูกพบในชุดข้อมูล 5 not in x
    เท็จ(False)

    ตัวอย่างการใช้งาน

    x = 'Hello world' # กำหนดข้อความโดยทำการเก็บข้อมูลชนิด string
    
    print('e' in x)
    # โปรแกรมจะทำการปรินต์ค่า True เพราะตัว e บรรจุอยู่ในข้อความ
    
    print('e' not in x)
    # โปรแกรมจะทำการปรินต์ค่า False เพราะตัว e บรรจุอยู่ในข้อความ
    
    
    products = ["pencil", "book", "pen", "eraser", "ruler"] # กำหนดรายการชนิดของสินค้าโดยทำการเก็บข้อมูลชนิดลิสต์ให้ตัวแปร products
    print("pen" in products)
    # โปรแกรมจะปรินท์ค่า True เนื่องจาก "pen" เป็นสินค้าชนิดหนึ่งที่อยู่ในลิสต์ข้อมูลของ products
    
    print("sharpener" in products)
    # โปรแกรมจะปรินท์ค่า False เนื่องจาก "sharpener" ไม่เป็นสินค้าชนิดหนึ่งที่อยู่ในลิสต์ข้อมูลของ products
    
    print("sharpener" not in products)
    # โปรแกรมจะปรินท์ค่า True เนื่องจาก "sharpener" ไม่เป็นสินค้าชนิดหนึ่งที่อยู่ในลิสต์ข้อมูลของ products
    
    
    product = {"name": "pencil", "price":5, "amount":50} # กำหนดคุณลักษณะของสินค้าซึ่งจะประกอบด้วยชื่อสินค้า(name), ราคา(price) และ จำนวนสินค้า(amount)
    print("name" in product) # ตรวจสอบว่าในข้อมูลสินค้ามีคุณลักษณะชื่อสินค้า(name) อยู่หรือไม่
    # โปรแกรมจะปรินท์ค่า True เนื่องจากคุณลักษณะสินค้าประกอบด้วยชื่อสินค้า(name), ราคา(price) และ จำนวนสินค้า(amount)
    
    print("discount" in product) # ตรวจสอบว่าในข้อมูลสินค้ามีคุณลักษณะส่วนลด(discount) อยู่หรือไม่
    # โปรแกรมจะปรินท์ค่า False เนื่องจากคุณลักษณะสินค้ามีเพียงแค่ชื่อสินค้า(name), ราคา(price) และ จำนวนสินค้า(amount)
    
    print("discount" not in product) # ตรวจสอบว่าในข้อมูลสินค้าไม่มีคุณลักษณะส่วนลด(discount) ใช่หรือไม่
    # โปรแกรมจะปรินท์ค่า True เนื่องจากคุณลักษณะสินค้ามีเพียงแค่ชื่อสินค้า(name), ราคา(price) และ จำนวนสินค้า(amount)
    

แหล่งที่มาของข้อมูล https://www.programiz.com/python-programming/operators