Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Toán tử Inplace vs Standard Operators trong Python


Toán tử Inplace trong Python

Inplace operation (phép toán tại chỗ) là phép toán trực tiếp thay đổi nội dung của một đại số tuyến tính, vectơ hoặc ma trận đã cho mà không tạo bản sao. Các toán tử giúp thực hiện loại phép toán này được gọi là inplace operator.

Hãy hiểu qua ví dụ đơn giản:

a = 9
a += 2
print(a)

Kết quả

11

Trên đây là toán tử +=. Ở đây trước tiên, a cộng 2 với giá trị a sau đó cập nhật giá trị trước đó.

Nguyên tắc trên áp dụng cho các toán tử khác nữa. Các inplace operator phổ biến là:

  • +=
  • -=
  • *=
  • /=
  • %=

Nguyên tắc trên áp dụng cho các kiểu khác ngoài số, ví dụ:

language = "Python"
language += "3"
print(language)

Kết quả

Python3

Ví dụ trên của x+=y tương đương với x = operator.iadd(x,y)

Có nhiều toán tử được dùng cho inplace operations.

iadd()

Hàm này dùng để gán giá trị hiện tại và cộng chúng. Toán tử này thực hiện phép x+=y.

x = operator.iadd(9, 18)
print("Kết quả sau cộng: ", end="")
print(x)

Kết quả

Kết quả sau cộng: 27

isub()

Hàm này dùng để gán giá trị hiện tại và trừ chúng. Hàm isub() thực hiện phép x-=y.

x = operator.isub(9, 18)
print("Kết quả sau trừ: ", end="")
print(x)

Kết quả

Kết quả sau trừ: -9

imul()

Hàm này dùng để gán giá trị hiện tại và nhân chúng. Toán tử này thực hiện phép x*=y.

x = operator.imul(9, 18)
print("Kết quả sau nhân: ", end="")
print(x)

Kết quả

Kết quả sau nhân: 162

itruediv()

Hàm này dùng để gán giá trị hiện tại và chia chúng. Toán tử này thực hiện phép x/=y.

x = operator.itruediv(9, 18)
print("Kết quả sau chia: ", end="")
print(x)

Kết quả

Kết quả sau chia: 0.5

imod()

Hàm này dùng để gán giá trị hiện tại và chia lấy phần dư. Toán tử này thực hiện phép x %=y.

x = operator.imod(9, 18)
print("Kết quả sau modulus: ", end="")
print(x)

Kết quả

Kết quả sau modulus: 9

iconcat()

Hàm này dùng để nối hai chuỗi.

x = "Tutorials"
y = "Point"
str1 = operator.iconcat(x, y)
print("Sau khi nối: ", end="")
print(str1)

Kết quả

Sau khi nối: TutorialsPoint

ipow()

Hàm này tương đương với x **=y.

x = operator.ipow(2, 6)
print("Kết quả sau lũy thừa: ", end="")
print(x)

Kết quả

Kết quả sau lũy thừa: 64

Toán tử Standard (Standard Operators)

Toán tử là các cấu trúc có thể thao tác giá trị của toán hạng (operands).

Ví dụ trong biểu thức: 9+18 = 27, ở đây 9 và 18 là operands và + được gọi là operator.

Các loại Toán tử

Ngôn ngữ Python hỗ trợ các loại toán tử sau:

  • Arithmetic Operators (Toán tử số học): (ví dụ: +, -, *, /, %, **, //)

  • Comparison Operators (Toán tử so sánh): (ví dụ: "==", "!=", "<>", ">", "<", ">=", "<=")

  • Assignment Operators (Toán tử gán): (ví dụ: "=", "+=", "-=", "*=", "/=", "%=", "**=", "//=")

  • Logical Operators (Toán tử logic): (ví dụ: "Logical AND", "Logical OR", "Logical NOT")

  • Bitwise Operators (Toán tử bitwise): (ví dụ: "|", "&", "^", "~", "<<", ">>")
  • Membership Operators (Toán tử thành viên): (ví dụ: in, not in)

  • Identity Operators (Toán tử nhận diện): (ví dụ: is, is not)

Ánh xạ Toán tử sang Hàm (Mapping Operators to Functions)

Dưới đây là bảng cho thấy cách các phép toán trừu tượng tương ứng với ký hiệu toán tử trong cú pháp Python và các hàm trong module operator.

Phép toán Cú pháp Hàm
Addition (Cộng) x + y add(x, y)
Concatenation (Nối) Seq1 + seq2 Concat(seq1, seq2)
Containment Test (Kiểm tra chứa) Obj in seq Contains(seq, obj)
Division (Chia) x / y Truediv(x, y)
Division (Chia nguyên) x // y Floordiv(x, y)
Bitwise And x & y And_(x, y)
Bitwise Exclusive Or x ^ y Xor(x, y)
Bitwise Inversion ~x Invert(x)
Bitwise Or x|y or_(x,y)
Exponentiation (Lũy thừa) x ** y pow(x, y)
Identity (Đồng nhất) x is y is_(x, y)
Identity (Khác) x is not y is_not(x, y)
Indexed Assignment (Gán chỉ mục) obj[k] = v setitem(obj, k, v)
Indexed deletion (Xóa chỉ mục) del obj[k] delitem(obj, k)
Indexing (Chỉ mục) Obj[k] Getitem(obj,k)
Left shift (Dịch trái) a << b Lshift(a,b)
Modulo (Modulo) a % b Mod(a, b)
Multiplication (Nhân) x*y mul(x*y)
Matrix multiplication (Nhân ma trận) x@b Matmul(x, y)
Negation (Phủ định số học) -a Neg(a)
Negation (Phủ định logic) not a not_(a)
Positive (Dương) +a pos(a)
Right shift (Dịch phải) a>>b Rshift(a,b)
Slice Assignment (Gán slice) Seq[i:j] =values Setitem(seq, slice(i,j), values)
Slice deletion (Xóa slice) Del seq[i:j] Delitem(seq, slice(i,j))
Slicing (Cắt slice) Seq[i:j] Getitem(seq, slice(I, j))
String formatting (Định dạng chuỗi) S % obj Mod(s, obj)
Subtraction (Trừ) a-b Sub(a,b)
Truth Test (Kiểm tra chân) obj truth(obj)
Ordering (Sắp xếp) a<b lt(a,b)
Ordering a<=b le(a,b)
Equality (Bằng nhau) a == b eq(a,b)
Difference (Khác nhau) a != b ne(a,b)
Ordering a >= b ge(a, b)
Ordering a > b gt(a, b)