Toán tử nào được đánh giá cuối cùng trong một biểu thức python

Có, RHS của một nhiệm vụ được đánh giá trước LHS;

từ https. // tài liệu. con trăn. org/3/tham chiếu/simple_stmts. html#câu lệnh gán

Một câu lệnh gán đánh giá danh sách biểu thức [hãy nhớ rằng đây có thể là một biểu thức đơn hoặc danh sách được phân tách bằng dấu phẩy, danh sách sau mang lại một bộ] và gán đối tượng kết quả duy nhất cho từng danh sách đích, từ trái sang phải

Ngôn ngữ tiếp theo trong phần thảo luận về cách gán cho các cú pháp đích khác nhau được xác định, nhưng làm như vậy từ quan điểm rằng danh sách biểu thức đã được đánh giá để tạo ra một đối tượng

Thật vậy, thứ tự đánh giá trong LHS cũng được xác định;

Sự kết hợp của các giá trị, biến, toán tử và lệnh gọi hàm được gọi là một biểu thức. Trình thông dịch Python có thể đánh giá một biểu thức hợp lệ

Ví dụ

>>> 5 - 7
-2

Đây

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
2 là một biểu thức. Có thể có nhiều hơn một toán tử trong một biểu thức

Để đánh giá các loại biểu thức này, có một quy tắc ưu tiên trong Python. Nó hướng dẫn thứ tự thực hiện các hoạt động này

Ví dụ: phép nhân có quyền ưu tiên cao hơn phép trừ

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2

Nhưng chúng ta có thể thay đổi thứ tự này bằng cách sử dụng dấu ngoặc đơn

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
3 vì nó có độ ưu tiên cao hơn phép nhân

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12

Thứ tự ưu tiên của toán tử trong Python được liệt kê trong bảng sau. Nó theo thứ tự giảm dần [nhóm trên có quyền ưu tiên cao hơn nhóm dưới]

OperatorsMeaning

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
3Parentheses
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
5Exponent
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
6,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
7,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
8Unary plus, Unary minus, Bitwise NOT
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
9,
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
0,
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
1,
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
2Multiplication, Division, Floor division, Modulus
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
3,
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
4Addition, Subtraction
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
5,
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
6Bitwise shift operators
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
7Bitwise AND
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
8Bitwise XOR
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
9Bitwise OR
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
10,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
11,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
12,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
13,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
14,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
15,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
16,
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
17

Hãy xem xét một số ví dụ

Giả sử chúng ta đang xây dựng một khối

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
13 chạy
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
14 khi bữa trưa là trái cây hoặc bánh mì và chỉ khi tiền lớn hơn hoặc bằng 2

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
1

đầu ra

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
1

Chương trình này chạy khối

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
14 ngay cả khi tiền bằng 0. Nó không cung cấp cho chúng tôi đầu ra mong muốn vì mức độ ưu tiên của
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
11 cao hơn
# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
12

Chúng ta có thể nhận được đầu ra mong muốn bằng cách sử dụng dấu ngoặc đơn

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
3 theo cách sau

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
2

đầu ra

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
3

Tính liên kết của các toán tử Python

Chúng ta có thể thấy trong bảng trên có nhiều toán tử tồn tại trong cùng một nhóm. Các toán tử này có cùng mức ưu tiên

Khi hai toán tử có cùng mức độ ưu tiên, tính kết hợp giúp xác định thứ tự của các phép toán

Tính kết hợp là thứ tự mà một biểu thức được đánh giá có nhiều toán tử có cùng mức độ ưu tiên. Hầu như tất cả các toán tử đều có tính kết hợp từ trái sang phải

Ví dụ: phép nhân và phép chia sàn có cùng mức độ ưu tiên. Do đó, nếu cả hai đều có mặt trong một biểu thức, thì biểu thức bên trái được đánh giá trước

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
4

đầu ra

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
5

Ghi chú. Toán tử số mũ

# Multiplication has higher precedence
# than subtraction
>>> 10 - 4 * 2
2
5 có tính kết hợp từ phải sang trái trong Python

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
7

Chúng ta có thể thấy rằng

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
20 tương đương với
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
21

Toán tử không kết hợp

Một số toán tử như toán tử gán và toán tử so sánh không có tính kết hợp trong Python. Có các quy tắc riêng cho các chuỗi của loại toán tử này và không thể biểu thị dưới dạng tính kết hợp

Ví dụ:

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
22 không có nghĩa là
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
23 cũng không phải
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
24.
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
22 tương đương với
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
26 và được đánh giá từ trái sang phải

Hơn nữa, trong khi xâu chuỗi các phép gán như

# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
27 là hoàn toàn hợp lệ, thì
# Parentheses [] has higher precedence
>>> [10 - 4] * 2
12
28 sẽ dẫn đến lỗi

Toán tử nào được đánh giá cuối cùng trong một biểu thức và hoặc?

Khi biểu thức chứa toán tử từ nhiều danh mục, toán tử số học được đánh giá trước, toán tử so sánh được đánh giá tiếp theo và toán tử logic được đánh giá .

Python đánh giá các biểu thức theo thứ tự nào?

Thứ tự đánh giá . Điều đó cũng áp dụng cho các đối số chức năng. Python sử dụng đoản mạch khi đánh giá các biểu thức liên quan đến toán tử và hoặc hoặc. the left operand is always evaluated before the right operand. That also applies to function arguments. Python uses short circuiting when evaluating expressions involving the and or or operators.

Toán tử nào được đánh giá đầu tiên trong một biểu thức?

Biểu thức có toán tử có mức độ ưu tiên cao hơn được đánh giá trước. Quyền ưu tiên cũng có thể được mô tả bằng từ "ràng buộc. " Các toán tử có quyền ưu tiên cao hơn được cho là có ràng buộc chặt chẽ hơn.

Các biểu thức Python có được đánh giá từ trái sang phải không?

Python đánh giá các biểu thức từ trái sang phải . Lưu ý rằng trong khi đánh giá một bài tập, phía bên tay phải được đánh giá trước phía bên trái.

Chủ Đề