
ตัวดำเนินการ(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)
- ตัวดำเนินการแบบเอกลักษณ์(Identity operators)
ตัวดำเนินการแบบเอกลักษณ์ ประเภทนี้ประกอบด้วย is และ is not เป็นตัวดำเนินการที่ใช้สำหรับตรวจสอบว่า ค่าสองค่าใดๆ นั้นถูกเก็บไว้ที่ตำแหน่งหน่วยความจำเดียวกันหรือไม่ โดยตัวแปรสองตัวที่มีค่าเท่ากันนั้น อาจจะไม่จำเป็นต้องชี้ไปที่ตำแหน่งหน่วยความจำเดียวกันก็ได้ตัวดำเนินการ ความหมาย ตัวอย่างการใช้งาน
กำหนดให้ x = Trueis เป็นจริง ก็ต่อเมื่อตัวถูกดำเนินการสองตัวที่ถูกดำเนินการนั้นถูกเก็บไว้ที่หน่วยความจำเดียวกัน 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) ดังนั้นตัวแปรสำหรับข้อมูลประเภทลิสต์แต่ละตัวจะเก็บข้อมูลแยกกันคนละตำแหน่งของหน่วยความจำ
- ตัวดำเนินการแบบตรวจสอบการเป็นสมาชิก(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)