- Published on
Các toán tử trong python
- Authors

- Name
- Trần Mạnh Thắng
- @TranManhThang96
I. Toán tử toán học +, -, *, /, %, //, **
1.Một vài toán tử cơ bản trong python:
+, -, *, /, %, //, **
+=, -=, /=, %=, **=
a = 3
b = a + 1 # b = 4
c = a - 1 # c = 2
d = a * 2 # d = 6
e = a / 2 # e = 1.5
f = a % 2 # f = 1
g = a ** 2 # g = 9
h = a // 2 # h = 1
Cần để ý một vài phép toán đặc biệt: % (chia lấy phần dư), // (chia lấy phần nguyên), ** (phép mũ)
Tham khảo thêm tại: link
2. Quy ước Pemdas
Pemdas là một thuật ngữ đại số được sử dụng để nhớ thứ tự ưu tiên của các phép toán trong một biểu thức. Pemdas là một từ viết tắt, mỗi chữ cái đều biểu thị một loại phép toán:
- P: Parentheses (Dấu ngoặc)
- E: Exponents (Luỹ thừa)
- M: Multiplication (Nhân)
- D: Division (Chia)
- A: Addition (Cộng)
- S: Subtraction (Trừ)
Theo quy tắc PEMDAS, các phép toán được thực hiện theo thứ tự ưu tiên từ trái sang phải: dấu ngoặc, luỹ thừa, nhân/chia (cùng mức độ ưu tiên), cộng/trừ (cùng mức độ ưu tiên).
II. Toán tử so sánh ==, !=, >, <, >=, <=
x = 4
y = 5
print(x == y) # False
print(x != y) # True
print(x > y) # False
print(x < y) # True
print(x >= y) # False
print(x <= y) # True
Tham khảo thêm tại: link
III. Toán tử đồng nhất is, is not
Trong python, is và is not là các toán tử kiểm tra xem hai biến có tham chiếu đến cùng một đối tượng trong bộ nhớ hay không. is: dùng để so sánh identity của hai đối tượng vì kiểu dữ liệu trong python đều là object và có địa chỉ bộ nhớ, còn is not thì ngược lại.
Cùng phân tích một ví dụ. Mặc dù data và test_data có cùng giá trị nhưng bởi vì địa chỉ của chúng khác nhau nên data is test_data sẽ trả về False
data = [1,2,3]
test_data = [1,2,3]
print(data == test_data) # True
print(id(data)) # 2591976329600
print(id(test_data)) # 2591976331456
print(data is test_data) # False
print(data is not test_data)# True
Tất cả các kiểu dữ liệu complex mutable(list, dict, set) có cùng giá trị thì id cũng khác nhau. Chỉ có complex immutable(tuple) là 2 giá trị bằng nhau thì id cũng giống nhau. Lí do là bởi vì tuple thuộc kiểu immutable. Ví dụ sau sẽ chứng minh điều đó:
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
print(list1 == list2) # True
print(id(list1)) # 2826753806720
print(id(list2)) # 2826753808576
tuple1 = (1, "hello", 3.14)
tuple2 = (1, "hello", 3.14)
print(tuple1 == tuple2) # True
print(id(tuple1)) # 2592518774848
print(id(tuple2)) # 2592518774848
dict1 = {"a1": "one", "a2": "two", "a3": "three"}
dict2 = {"a1": "one", "a2": "two", "a3": "three"}
print(dict1 == dict2) # True
print(id(dict1)) # 2115201509248
print(id(dict2)) # 2309244023360
set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 4, 5}
print(set1 == set2) # True
print(id(set1)) # 2309244023360
print(id(set2)) # 3011340914688
Nhưng nếu data và test_data là kiểu dữ liêu nguyên thuỷ (primitive data) thì sao nhỉ. Bởi vì kiểu dữ liệu nguyên thuỷ thì 2 biến cùng giá trị sẽ cùng trỏ về một vùng nhớ nên kết quả sẽ như bên dưới:
data = 3
test_data = 3
print(data == test_data) # True
print(id(data)) # 140736207391224
print(id(test_data)) # 140736207391224
print(data is test_data) # True
print(data is not test_data)# False
Tham khảo thêm tại: link
IV. Toán tử logic and, or, not
Không giống như các ngôn ngữ khác sử dụng toán tử logic bằng ký hiệu (&&, ||, !) thì python dùng keyword and, or, not để biểu diễn chúng.
# and
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False
# or
print(True or True) # True
print(True or False) # True
print(False or True) # True
print(False or False) # False
# not
print(not True) # False
print(not False) # True
Một ví dụ khác và đối chiếu cách sử dụng với javascript
x = 1; y = 2
# and
print(x and y) # 2
print(y and x) # 1
# or
print(x or y) # 1
print(y or x) # 2
# not
print(not x) # False
print(not y) # False
const x = 1; y = 2
// &&
console.log(x && y) // 2
console.log(y && x) // 1
// ||
console.log(x || y) // 1
console.log(y || x) // 2
// !
console.log(!x) // false
console.log(!y) // false
Một ví dụ khác về sự ngắn gọn và tiện lợi của python. 2 cách dưới đây tương đồng nhưng cách 2 ngắn gọn hơn.
my_age = 25
if my_age > 18 and my_age < 27:
print("You are in the right age to be in the task force!")
if 18 < my_age < 27:
print("You are in the right age to be in the task force!")
Tham khảo thêm tại: link
V. Toán tử thành viên in, not in
toán tử in được sử dụng để kiểm tra xem một giá trị có tồn tại trong một string, list, tuple, dictionary, set. Ngược lại thì là not in
my_string = "Hello, World!"
print("Hello" in my_string) # True
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # True
my_dict = {"name": "John", "age": 30}
print("age" in my_dict) # True
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # True
my_tuple = (1, 2, 3, 4, 5)
print(3 in my_tuple) # True
print(6 not in my_tuple) # True
Tham khảo thêm tại: link
VI. Phép toán với bit (Bitwise Operators)
1. AND Operator (&)
x = 5 # 0101
y = 3 # 0011
print(x&y) # 1(0001)
2. OR Operator (|)
x = 5 # 0101
y = 3 # 0011
print(x|y) # 7(0111)
3. XOR Operator (^)
Dấu ^ nhưng không phải toán tử mũ đâu nhé, toán tử mũ là **
Phép xor: 2 bit khác nhau mà so với nhau thì thành 1
x = 5 # 0101
y = 3 # 0011
print(x^y) # 6(0110)
4. Left Shift Operator (<<)
x = 5 # 0000 0101
print(x<<2) # 20(0001 0100)
5. Right Shift Operator (>>)
x = 5 # 0000 0101
print(x>>2) # (1)0000 0001
Tham khảo thêm tại: link