Toán tử phép trừ trong Python nhận hai toán hạng, toán hạng đầu tiên ở bên trái và toán hạng thứ hai ở bên phải và trả về hiệu của toán hạng thứ hai từ toán hạng thứ nhất
Ký hiệu được sử dụng cho toán tử Phép trừ Python là -
cú pháp
Sau đây là cú pháp của Toán tử số học phép trừ Python với hai toán hạng
result = operand_1 - operand_2
trong đó
a = 20
b = 12
result = a - b
print[result]
0 và a = 20
b = 12
result = a - b
print[result]
1 là các số và kết quả là hiệu của a = 20
b = 12
result = a - b
print[result]
1 từ a = 20
b = 12
result = a - b
print[result]
0ví dụ 1. Phép trừ các số
Trong ví dụ này, chúng ta sẽ lấy hai số nguyên, trừ chúng và in kết quả
Chương trình Python
a = 20
b = 12
result = a - b
print[result]
Chạyđầu ra
8
Xâu chuỗi toán tử trừ
Bạn có thể trừ nhiều hơn một số từ một số trong một câu lệnh. Điều này là do, Toán tử trừ hỗ trợ xâu chuỗi
Chương trình Python
a = 63
b = 12
c = 5
d = 10
result = a - b - c - d
print[result]
Chạyđầu ra
ví dụ 2. Phép trừ các số dấu phẩy động
Float là một trong những kiểu dữ liệu số. Bạn có thể tính toán sự khác biệt của các số dấu phẩy động bằng toán tử Phép trừ Python
Chương trình Python
a = 12.5
b = 10.2
result = a - b
print[result]
Chạyđầu ra
2.3000000000000007
ví dụ 3. Phép trừ số phức
Bạn có thể tìm phép trừ của các số phức bằng cách sử dụng -
. Trong chương trình ví dụ sau, chúng ta sẽ lấy hai số phức và tìm hiệu của chúng
Chương trình Python
a = 1 + 8j
b = 3 + 5j
result = a - b
print[result]
Chạyđầu ra
[-2+3j]
Tóm lược
Trong hướng dẫn về Ví dụ Python này, chúng ta đã tìm hiểu Toán tử số học phép trừ Python là gì, cách sử dụng nó để tìm hiệu của hai hoặc nhiều số
Python cung cấp toán tử x -= y
để trừ hai đối tượng tại chỗ bằng cách tính chênh lệch x - y
và gán kết quả cho toán hạng đầu tiên tên biến
>>> x = 3 >>> x = x - 2 >>> x 10. Bạn có thể thiết lập hành vi trừ tại chỗ cho lớp của riêng mình bằng cách ghi đè phương thức "dunder" ma thuật
>>> x = 3 >>> x = x - 2 >>> x 11 trong định nghĩa lớp của bạn
>>> x = 3 >>> x -= 2 >>> x 1
Biểu thức x -= y
là đường cú pháp cho dạng dài hơn
>>> x = 3 >>> x = x - 2 >>> x 13
>>> x = 3 >>> x = x - 2 >>> x 1
Hãy khám phá một số ví dụ về các kiểu dữ liệu khác nhau của toán hạng
Ví dụ số nguyên
Toán tử
>>> x = 3 >>> x = x - 2 >>> x 14 trên toán hạng số nguyên lưu trữ chênh lệch toán học của cả hai toán hạng trong tên biến của toán hạng bên trái
>>> x = 82 >>> x -= 40 >>> x 42
Ví dụ nổi
Nếu ít nhất một trong các toán hạng là một giá trị float, thì kết quả cũng là một float—float có tính lây lan
>>> x = 2 >>> x -= 10.0 >>> x -8.0
Đặt ví dụ
Nếu toán hạng là tập hợp, kết quả của phép toán trừ tại chỗ sẽ ghi đè tập hợp hiện có bằng phép toán chênh lệch tập hợp
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}
Toán tử trừ tại chỗ trên tập hợp không tạo đối tượng tập hợp mới nhưng hoạt động trên tập hợp hiện có. Thay đổi cài đặt tại chỗ cho một biến
>>> x = 3 >>> x = x - 2 >>> x 10 có tác dụng phụ. Chẳng hạn, một biến khác
>>> x = 3 >>> x = x - 2 >>> x 16 có thể trỏ đến cùng một đối tượng trong bộ nhớ được cập nhật thông qua việc sử dụng phép trừ tại chỗ trên bất kỳ biến nào khác trỏ đến cùng một đối tượng đó trong bộ nhớ
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}
Loại dữ liệu không tương thích
Điều gì sẽ xảy ra nếu hai toán hạng có kiểu dữ liệu không tương thích—không giống như số float và số nguyên?
>>> x = 4 >>> x -= [1, 2, 3] Traceback [most recent call last]: File "", line 1, in x -= [1, 2, 3] TypeError: unsupported operand type[s] for -=: 'int' and 'list'
Kết quả của phép cộng không tương thích là một
>>> x = 3 >>> x = x - 2 >>> x 17. Bạn có thể khắc phục bằng cách chỉ sử dụng các loại dữ liệu tương thích cho thao tác bổ sung tại chỗ
Bạn có thể sử dụng toán tử cộng trên các đối tượng tùy chỉnh không?
Phương pháp ma thuật trừ tại chỗ của Python
Để sử dụng toán tử trừ tại chỗ
>>> x = 3 >>> x = x - 2 >>> x 14 trên các đối tượng tùy chỉnh, bạn cần xác định phương thức
>>> x = 3 >>> x = x - 2 >>> x 19 [“phương thức dunder”, “phương thức ma thuật”] nhận hai đối số
>>> x = 82 >>> x -= 40 >>> x 420 và
>>> x = 82 >>> x -= 40 >>> x 421, cập nhật đối số đầu tiên
>>> x = 82 >>> x -= 40 >>> x 420 với kết quả của phép trừ
Trong đoạn mã sau, bạn trừ hai đối tượng
>>> x = 82 >>> x -= 40 >>> x 423 với nhau bằng cách kết hợp nội dung của chúng
class Data: def __init__[self, data]: self.data = data def __isub__[self, other]: self.data -= other.data return self x = Data[44] y = Data[2] x -= y print[x.data] # 42
Bạn có thể thấy rằng nội dung của toán hạng đầu tiên được cập nhật do hoạt động trừ tại chỗ
Toán tử tại chỗ Python
[còn được gọi là toán tử gán phức hợp] thực hiện một thao tác tại chỗ trên một biến được cung cấp làm toán hạng đầu tiên. Chúng ghi đè giá trị của biến toán hạng đầu tiên bằng kết quả của phép toán khi thực hiện toán tử không gán. Ví dụ,
>>> x = 82 >>> x -= 40 >>> x 424 cũng giống như
>>> x = 82 >>> x -= 40 >>> x 425 đầu tiên tính kết quả của
>>> x = 82 >>> x -= 40 >>> x 426 và sau đó gán nó cho biến xOperatorNameShort ExampleEquivalent Long Example
>>> x = 82 >>> x -= 40 >>> x 427
>>> x = 82 >>> x -= 40 >>> x 428
>>> x = 82 >>> x -= 40 >>> x 429In-place Addition
>>> x = 82 >>> x -= 40 >>> x 424
>>> x = 82 >>> x -= 40 >>> x 425
>>> x = 3 >>> x = x - 2 >>> x 14In-place Subtraction
>>> x = 2 >>> x -= 10.0 >>> x -8.03
>>> x = 2 >>> x -= 10.0 >>> x -8.04
>>> x = 2 >>> x -= 10.0 >>> x -8.05In-place Multiplication
>>> x = 2 >>> x -= 10.0 >>> x -8.06
>>> x = 2 >>> x -= 10.0 >>> x -8.07
>>> x = 2 >>> x -= 10.0 >>> x -8.08In-place Division
>>> x = 2 >>> x -= 10.0 >>> x -8.09
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}0
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}1In-place Modulo
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}2
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}3
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}4In-place Integer Division
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}5
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}6
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}7In-place Power
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}8
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> my_set -= {1, 'Bob', 'Alice'} >>> my_set {'Carl'}9
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}0In-place Bitwise And
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}1
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}2
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}3In-place Bitwise Or
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}4
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}5
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}6In-place Bitwise XOR
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}7
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}8
>>> my_set = {'Alice', 'Bob', 'Carl'} >>> x = my_set >>> x -= {1, 'Bob', 'Alice'} >>> x {'Carl'} >>> my_set {'Carl'}9In-place Bitwise Shift Right
>>> x = 4 >>> x -= [1, 2, 3] Traceback [most recent call last]: File "", line 1, in x -= [1, 2, 3] TypeError: unsupported operand type[s] for -=: 'int' and 'list'0
>>> x = 4 >>> x -= [1, 2, 3] Traceback [most recent call last]: File "", line 1, in x -= [1, 2, 3] TypeError: unsupported operand type[s] for -=: 'int' and 'list'1> x = 4 >>> x -= [1, 2, 3] Traceback [most recent call last]: File "", line 1, in x -= [1, 2, 3] TypeError: unsupported operand type[s] for -=: 'int' and 'list'2
>>> x = 4 >>> x -= [1, 2, 3] Traceback [most recent call last]: File "", line 1, in x -= [1, 2, 3] TypeError: unsupported operand type[s] for -=: 'int' and 'list'3
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây