ในการเขียนโปรแกรม ออปเปอเรเตอร์โดยทั่วไปเป็นสัญลักษณ์ (คีย์) ที่กำหนดไว้ล่วงหน้าเพื่อดำเนินการบางอย่าง เช่น การบวก, ลบ, เปรียบเทียบ ฯลฯ Python มีชุดการดำเนินการสำเร็จรูปขนาดใหญ่ แบ่งหมวดหมู่ต่างๆ เช่น arithmetic, comparison, bit-wise, membership ฯลฯ
โมดูล operator ในไลบรารี Python ประกอบด้วยฟังก์ชันที่สอดคล้องกับออปเปอเรเตอร์สำเร็จรูป ชื่อของฟังก์ชันคล้ายกับประเภทของออปเปอเรเตอร์ที่สอดคล้องกัน ตัวอย่างเช่น ฟังก์ชัน add() ในโมดูล operator สอดคล้องกับออปเปอเรเตอร์ +
คลาส Object ของ Python มีเมธอด dunder (underscore คู่ นำหน้าและท้ายชื่อ) ที่สอดคล้องกับสัญลักษณ์ออปเปอเรเตอร์ เมธอด dunder เหล่านี้สามารถโอเวอร์โหลดได้อย่างเหมาะสมในคลาสที่ผู้ใช้กำหนด เพื่อนำการโอเวอร์โหลดออปเปอเรเตอร์ไปใช้ โมดูล operator ยังประกอบด้วยฟังก์ชัน dunder ที่สอดคล้องกัน ตัวอย่างเช่น add() และ __add__() ทั้งคู่ดำเนินการของสัญลักษณ์ +
เริ่มต้นด้วยการนำเข้าฟังก์ชันจากโมดูล operator:
>>> from operator import *
เพื่อเรียนรู้ฟังก์ชันที่สอดคล้องกับออปเปอเรเตอร์คณิตศาสตร์ เริ่มต้นตัวแปร 2 ตัว:
>>> a = 10 >>> b = 20
add(), sub() และ mul() สอดคล้องกับออปเปอเรเตอร์ +, - และ * สัญลักษณ์ / ของการหาร ถูกนำไปใช้โดยฟังก์ชัน truediv():
>>> add(a, b) 30 >>> a + b 30 >>> sub(a, b) -10 >>> a - b -10 >>> mul(a, b) 200 >>> a * b 200 >>> truediv(a, b) 0.5 >>> a / b 0.5
ออปเปอเรเตอร์คณิตศาสตร์อื่นๆ %, ** และ // ถูกนำไปใช้โดย mod(), pow() และ floordiv() จากโมดูล operator:
>>> a = 5 >>> b = 3 >>> a % b 2 >>> mod(a, b) 2 >>> a ** b 125 >>> pow(a, b) 125 >>> a // 2 2 >>> floordiv(a, b) 1
ออปเปอเรเตอร์ตรรกะ <, <=, >, >=, == และ != ถูกนำไปใช้โดย lt(), le(), gt(), ge(), eq() และ ne() ตามลำดับ:
>>> a = 5 >>> b = 7 >>> a < b True >>> lt(a, b) True >>> a <= b True >>> le(a, b) True >>> a > b False >>> gt(a, b) False >>> a >= b False >>> ge(a, b) False >>> a == b False >>> eq(a, b) False >>> a != b True >>> ne(a, b) True
ฟังก์ชันทำงานกับลำดับ (sequences)
ออปเปอเรเตอร์สำเร็จรูปของ Python in, + (concatenation), และ del ถูกนำไปใช้โดย contains(), concat(), delitem() ตามลำดับ สำหรับออปเปอเรเตอร์การกำหนดค่าดัชนี seq[x] = y ใช้ฟังก์ชัน setitem() สำหรับรับค่าของ seq[x] ใช้ฟังก์ชัน getitem()
>>> a = [1, 2, 3] >>> b = ['a', 'b', 'c'] >>> a + b # sequence concatenation [1, 2, 3, 'a', 'b', 'c'] >>> concat(a, b) [1, 2, 3, 'a', 'b', 'c'] >>> contains(a, '2') # implements in operator False >>> contains(a, 2) True >>> 2 in a True >>> b[1] = 'x' # index assignment implemented by setitem() >>> b ['a', 'x', 'c'] >>> setitem(b, 1, 'b') >>> b ['a', 'b', 'c'] >>> a[1] # fetching value at index – implemented by getitem() 2 >>> getitem(a, 1) 2 >>> del b[2] # deleting element at index. Corresponding function is delitem() >>> b ['a', 'b'] >>> delitem(a, 2) >>> a [1, 2]
ออปเปอเรเตอร์ที่ดำเนินการกำหนดค่าและคำนวณในขั้นตอนเดียว เรียกว่า in-place operator ออปเปอเรเตอร์ in-place ของ Python ถูกนำไปใช้โดยฟังก์ชันที่สอดคล้องในโมดูล operator ออปเปอเรเตอร์ += ที่ดำเนินการบวกและกำหนดค่า มีฟังก์ชันที่สอดคล้องคือ iadd() เช่นกัน ออปเปอเรเตอร์แต่ละตัวที่ขึ้นต้นด้วย 'i' จะสร้าง equivalent แบบ in-place
In-place addition
>>> a = 10 >>> b = 20 >>> a = iadd(a, b) # equivalent to a += b >>> a 30
In-place subtraction
>>> a = 10 >>> b = 20 >>> a = isub(a, b) # equivalent to a -= b >>> a -10
In-place multiplication
>>> a = 10 >>> b = 20 >>> a = imul(a, b) # equivalent to a *= b >>> a 200
In-place division
>>> a = 10 >>> b = 4 >>> a = itruediv(a, b) >>> a 2.5
โมดูล operator ยังประกอบด้วยฟังก์ชันที่นำไปใช้กับออปเปอเรเตอร์ bit-wise มาตรฐาน:
>>> and_(10, 2) # equivalent to 10 & 2 2 >>> or_(10, 2) # equivalent to 10 | 2 10 >>> xor(10, 2) # equivalent to 10 ^ 2 8 >>> lshift(10, 2) # equivalent to 10 << 2 40 >>> rshift(10, 2) # equivalent to 10 >> 2 2