2010-03-04 29 views
5

Tôi chỉ đang chơi xung quanh với dòng lệnh python và toán tử **, theo như tôi biết thực hiện chức năng nguồn. Vì vậy, 2 ** 3 phải là (và là) 8 vì 2 * 2 * 2 = 8.Tính kết hợp của toán tử ** của Python là gì?

Ai đó có thể giải thích hành vi mà tôi đã tìm thấy không? Tôi không thấy bất kỳ cách nào để nhóm các hoạt động với dấu ngoặc đơn để thực sự nhận được kết quả của 65536 như đã đạt được ở đây.

>>> 2 ** 2 ** 2 
16 
>>> 2 ** 2 ** 2 ** 2 
65536 
>>> (2 ** 2 ** 2) ** 2 
256 
+1

Đây là tài liệu được hiểu và dễ hiểu. Tại sao bạn đăng một câu hỏi cho một cái gì đó trong tài liệu? –

Trả lời

5
2** (2**(2**2)) 

từ http://docs.python.org/reference/expressions.html

nhà khai thác trong nhóm hộp cùng trái sang phải (trừ để so sánh, trong đó có bài kiểm tra, mà tất cả đều có cùng độ ưu tiên và chuỗi từ trái sang phải - xem So sánh phần - và lũy thừa, nhóm từ phải sang trái).

0

Ngoài ra:

2 ** (2 ** 2 **2) 

Một cách này hay cách khác, nó sẽ trở thành 2 ** 16

0

Các ** nhà điều hành là đúng kết:

2 ** (2 ** (2 ** 2)) = 2 ** (2 ** 4) = 2 ** 16 = 65536

4

Hoặc là nó liên kết tới bên trái hoặc bên phải. Để tự mình khám phá câu trả lời, hãy thử nghiệm.

>>> 3 ** 3 ** 3 
7625597484987 
>>> (3 ** 3) ** 3 
19683 
>>> 3 ** (3 ** 3) 
7625597484987 

Do đó, nó liên kết với bên phải.

Hoặc bạn có thể đọc tài liệu. google: "python quyền lực" và kết quả đầu tiên được http://www.python.org/doc/2.5.2/ref/power.html

Câu thứ hai là:

Như vậy, trong một chuỗi unparenthesized quyền lực và khai thác unary, các khai thác được đánh giá từ phải sang bên trái (điều này không hạn chế thứ tự đánh giá cho các toán hạng).

Xác nhận kết quả thử nghiệm.

Các vấn đề liên quan