Hướng dẫn what is an expression explain order of evaluation in python? - một biểu thức giải thích thứ tự đánh giá trong python là gì?

Chương này là từ cuốn sách 

Thứ tự đánh giá

Bảng 4.2 liệt kê thứ tự hoạt động (quy tắc ưu tiên) cho các toán tử Python. Tất cả các toán tử ngoại trừ toán tử nguồn (**) được đánh giá từ trái sang phải và được liệt kê trong bảng từ ưu tiên cao nhất đến thấp nhất. Đó là, các toán tử được liệt kê đầu tiên trong bảng được đánh giá trước khi các nhà khai thác được liệt kê sau. .

Bảng 4.2 Thứ tự đánh giá (cao nhất đến thấp nhất)

Nhà điều hành

Tên

(...), [...], {...}

Tuple, Danh sách và sáng tạo từ điển

´ ... ôi

Chuyển đổi chuỗi

s [i], s [i: j]

Lập chỉ mục và cắt lát

s.attr

Thuộc tính

f(...)

Các cuộc gọi chức năng

+x, -x, ~ x

Các nhà khai thác đơn

x ** y

Quyền lực (liên kết đúng)

x * y, x / y, x // y, x % y

Phép nhân, phân chia, phân chia sàn, modulo

x + y, x - y

Ngoài ra, trừ

x << y, x >> y

Bit-shifting

X & Y.

Bitwise và

x ^ y

BitWise độc ​​quyền hoặc

x | y

Bitwise hoặc

x < y, x <= y, x > y, x >= y,

Các bài kiểm tra thành viên so sánh, bản sắc và trình tự

x == y, x! = y

x y

x là y, x không phải y

x trong s, x không phải trong s

không phải x

Phủ định logic

x và y

Hợp lý và

x hoặc y

Hợp lý hoặc

Lambda args: expr

Hàm ẩn danh


Python's Eval () cho phép bạn đánh giá các biểu thức Python tùy ý từ đầu vào dựa trên mã dựa trên chuỗi hoặc được biên dịch. Hàm này có thể tiện dụng khi bạn đang cố gắng đánh giá động các biểu thức python từ bất kỳ đầu vào nào đến dưới dạng chuỗi hoặc đối tượng mã được biên dịch.rules of precedence. Python follows the same precedence rules for its mathematical operators that mathematics does.

  1. Khi nhiều hơn một toán tử xuất hiện trong một biểu thức, thứ tự đánh giá phụ thuộc vào các quy tắc ưu tiên. Python tuân theo các quy tắc ưu tiên tương tự cho các nhà khai thác toán học mà toán học làm.

  2. Số mũ có quyền ưu tiên cao nhất tiếp theo, vì vậy 2**1+1 là 3 và không phải 4, và 3*1**3 là 3 và không 27. Bạn có thể giải thích tại sao không?

  3. Nhân hóa và cả hai toán tử phân chia có cùng mức độ ưu tiên, cao hơn so với cộng và trừ, cũng có cùng mức độ ưu tiên. Vì vậy, 2*3-1 mang lại 5 thay vì 4 và 5-2*2 là 1, không phải 6.

  4. Các nhà khai thác có cùng mức độ được đánh giá từ trái sang phải. Trong đại số, chúng tôi nói rằng họ là liên kết trái. Vì vậy, trong biểu thức 6-3+2, phép trừ xảy ra trước, mang lại 3. Sau đó, chúng tôi thêm 2 để nhận kết quả 5. Nếu các hoạt động được đánh giá từ phải sang trái, kết quả sẽ là 6-(3+2), là 1.

Ghi chú

Do một số câu đố lịch sử, một ngoại lệ đối với quy tắc liên kết từ trái sang phải là nhà điều hành số mũ **. Một gợi ý hữu ích là luôn luôn sử dụng dấu ngoặc đơn để buộc chính xác thứ tự bạn muốn khi có liên quan:

Ghi chú

Đây là một cách thứ hai mà dấu ngoặc đơn được sử dụng trong Python. Cách đầu tiên mà bạn đã thấy là () chỉ ra một cuộc gọi chức năng, với các đầu vào đi vào bên trong dấu ngoặc đơn. Làm thế nào Python có thể cho biết khi dấu ngoặc đơn quy định để gọi một hàm và khi chúng chỉ buộc thứ tự hoạt động cho các biểu thức toán tử mơ hồ?

Câu trả lời là nếu có một biểu thức ở bên trái của dấu ngoặc đơn đánh giá thành một đối tượng hàm, thì dấu ngoặc đơn biểu thị một cuộc gọi chức năng, và nếu không thì không. Bạn sẽ phải làm quen với việc thực hiện suy luận tương tự khi bạn nhìn thấy dấu ngoặc đơn: Đây có phải là một cuộc gọi chức năng hay chỉ chỉ định ưu tiên?

Kiểm tra việc hiểu của bạn

    Giá trị của biểu thức sau:

  • 14
  • Sử dụng dấu ngoặc đơn, biểu thức được đánh giá là (2*5) trước tiên, sau đó (10 // 3), sau đó (16-3), và sau đó (13+1).
  • 24
  • Hãy nhớ rằng * đã được ưu tiên hơn -.
  • 3
  • Hãy nhớ rằng // đã được ưu tiên hơn -.
  • 13.667
  • Hãy nhớ rằng // không phân chia số nguyên.

Đây là một hình ảnh động cho biểu thức trên:

Bạn đã thử các hoạt động trên trang này of activities on this page

Một biểu thức giải thích thứ tự đánh giá là gì?

Một biểu thức có thể chứa một số toán tử có ưu tiên bằng nhau. Khi một số toán tử như vậy xuất hiện ở cùng cấp độ trong một biểu thức, việc đánh giá sẽ tiến hành theo sự kết hợp của toán tử, từ phải sang trái hoặc từ trái sang phải.When several such operators appear at the same level in an expression, evaluation proceeds according to the associativity of the operator, either from right to left or from left to right.

Một biểu hiện trong Python là gì?

Một biểu thức là sự kết hợp của các toán tử và toán hạng được giải thích để tạo ra một số giá trị khác.Trong bất kỳ ngôn ngữ lập trình nào, một biểu thức được đánh giá theo mức độ ưu tiên của các nhà khai thác.a combination of operators and operands that is interpreted to produce some other value. In any programming language, an expression is evaluated as per the precedence of its operators.

Biểu thức toán học nào được đánh giá đầu tiên trong Python?

Quyền ưu tiên.Cũng giống như trong toán học thông thường, phép nhân và phân chia có "ưu tiên" cao hơn so với cộng và trừ, vì vậy chúng được đánh giá đầu tiên trong một biểu thức.multiplication and division have higher "precedence" than addition and subtraction, so they are evaluated first in an expression.

Đánh giá biểu hiện trong Python là gì?

Python's Eval () cho phép bạn đánh giá các biểu thức Python tùy ý từ đầu vào dựa trên mã dựa trên chuỗi hoặc được biên dịch.Hàm này có thể tiện dụng khi bạn đang cố gắng đánh giá động các biểu thức python từ bất kỳ đầu vào nào đến dưới dạng chuỗi hoặc đối tượng mã được biên dịch.allows you to evaluate arbitrary Python expressions from a string-based or compiled-code-based input. This function can be handy when you're trying to dynamically evaluate Python expressions from any input that comes as a string or a compiled code object.