Tôi đã đọc các câu lệnh gán trong tài liệu Python (//docs.python.org/reference/simple_stmts.html#assignment-statements).
Trong đó nó được trích dẫn rằng:
Nếu mục tiêu là một danh sách mục tiêu được đặt trong ngoặc hoặc trong dấu ngoặc vuông: đối tượng phải là một số lượng khác nhau có cùng số lượng mục như có mục tiêu trong danh sách mục tiêu và các mục của nó được gán, từ trái sang phải, đến mục tiêu.
Sau khi đọc nó, tôi đã nghĩ đến việc viết một mẫu như thế này:
a = 5 b = 4 a, b = a + b, a print a, bGiả định của tôi là cả A và B nên có giá trị 9.
Tuy nhiên, tôi đã được chứng minh là sai. 'A' có giá trị 9 và 'B' có giá trị là 5.
Một số người có thể giúp tôi hiểu điều này tốt hơn không? Tại sao giá trị cũ hơn của 'A' được gán chứ không phải là giá trị mới? Theo tài liệu, giá trị của A sẽ được gán đầu tiên phải không? Tui bỏ lỡ điều gì vậy?
bad_coder
9.78820 Huy hiệu vàng38 Huy hiệu bạc62 Huy hiệu Đồng20 gold badges38 silver badges62 bronze badges
hỏi ngày 16 tháng 7 năm 2012 lúc 10:13Jul 16, 2012 at 10:13
Thiruvenkadamthiruvenkadamthiruvenkadam
4.0483 Huy hiệu vàng26 Huy hiệu bạc26 Huy hiệu đồng3 gold badges26 silver badges26 bronze badges
Tất cả các biểu thức ở bên phải của toán tử gán được đánh giá trước khi bất kỳ bài tập nào được thực hiện.
Từ hướng dẫn Python: Các bước đầu tiên hướng tới lập trình:
Dòng đầu tiên chứa nhiều bài tập: các biến A và B đồng thời nhận các giá trị mới 0 và 1. Trên dòng cuối cùng, điều này được sử dụng lại, chứng minh rằng các biểu thức ở phía bên phải đều được đánh giá trước khi bất kỳ bài tập nào diễn ra. Các biểu thức bên phải được đánh giá từ bên trái sang phải.the expressions on the right-hand side are all evaluated first before any of the assignments take place. The right-hand side expressions are evaluated from the left to the right.
Nhấn mạnh của tôi.
Mã của bạn có chức năng tương đương với các điều sau:
a, b = 5 + 4, 5 print a, bĐã trả lời ngày 16 tháng 7 năm 2012 lúc 10:15Jul 16, 2012 at 10:15
Mark Byersmark ByersMark Byers
785K188 Huy hiệu vàng1552 Huy hiệu bạc1440 Huy hiệu đồng188 gold badges1552 silver badges1440 bronze badges
1
Python không có "toán tử dấu phẩy" như trong C. Thay vào đó, dấu phẩy chỉ ra rằng một tuple nên được xây dựng. Phía bên tay phải của
a, b = a + b, alà một tuple với hai mục a + b và a.
Ở phía bên trái của một bài tập, dấu phẩy chỉ ra rằng việc giải nén trình tự nên được thực hiện theo các quy tắc bạn đã trích dẫn: a sẽ được gán phần tử đầu tiên của tuple, a, b = 5 + 4, 5 print a, b 1 thứ hai.
Đã trả lời ngày 16 tháng 7 năm 2012 lúc 10:16Jul 16, 2012 at 10:16
Sven Marnachsven MarnachSven Marnach
547K114 Huy hiệu vàng918 Huy hiệu bạc820 Huy hiệu đồng114 gold badges918 silver badges820 bronze badges
Bạn có thể nghĩ về các bài tập xảy ra song song trên các bản sao thay vì tuần tự và tại chỗ.
Đây là lý do tại sao trong Python bạn không cần chức năng hoán đổi:
a, b = b, aCông trình đủ mà không yêu cầu biến TEMP, a, b = 5 + 4, 5 print a, b 2.
Đã trả lời ngày 16 tháng 7 năm 2012 lúc 10:15Jul 16, 2012 at 10:15
Nhà điều hành nào là dấu phẩy?
Toán tử dấu phẩy (,) đánh giá từng toán hạng của nó (từ trái sang phải) và trả về giá trị của toán hạng cuối cùng. Điều này cho phép bạn tạo một biểu thức ghép trong đó nhiều biểu thức được đánh giá, với giá trị cuối cùng của biểu thức hợp chất là giá trị của các biểu thức thành viên ngoài cùng bên phải.
1 | Trước khi di chuyển xa hơn, trước tiên chúng ta hãy xem sự ưu tiên của các nhà khai thác trong Python từ mức ưu tiên cao nhất đến thấp nhất. Nhà điều hành & Desc |
2 | ** Số mũ (nâng lên sức mạnh) |
3 | * / % // Nhân, chia, phân chia modulo và sàn |
4 | + - Cộng và trừ |
5 | > Bên phải và bên trái Bitwise Shift |
6 | Không có giá trị Bitwise 'và' |
7 | ^ | BitWise độc quyền `hoặc 'và thường xuyên` hoặc' |
8 | = Toán tử so sánh |
9 | ==! = Toán tử bình đẳng |
10 | = %= /= /// = -= += *= ** = Toán tử chuyển nhượng |
11 | không phải Người vận hành danh tính |
12 | không phải vào Các nhà khai thác thành viên |
13 | không hoặc và Toán tử logic |
Bây giờ, chúng ta hãy thảo luận về dấu phẩy.
Thí dụ
Hãy nói rằng chúng tôi có các biểu thức sau và chúng tôi cần quyết định cách thức hoạt động và tính toán -
print("x" in "y", "x")
Đầu ra
False xThí dụ
Hãy nói rằng chúng tôi có các biểu thức sau và chúng tôi cần quyết định cách thức hoạt động và tính toán -
("x" in "y"), "x"Đầu ra
"x" in ("y", "x")
Chúng tôi có đầu ra ở trên vì dấu phẩy không phải là toán tử, mà là một dấu phân cách giữa các biểu thức. Ở trên được đánh giá như thể bạn đã nhập -
- Những điều trên được đánh giá như thế này -
- Cập nhật vào ngày 19 tháng 9 năm 2022 13:47:49
- Câu hỏi và câu trả lời liên quan
- Sự kết hợp của toán tử ** của Python là gì?
- Các toán tử ưu tiên trong C#là gì?
- Nhà điều hành ưu tiên phân tích cú pháp là gì?
- Theo nhà điều hành Java ưu tiên, nhà điều hành nào có quyền ưu tiên cao nhất?
- Nhà điều hành PHP ưu tiên
- Quan hệ ưu tiên trong ngữ pháp của nhà điều hành là gì?
- Chúng ta có thể thay đổi ưu tiên toán tử trong Python không?
- Toán tử dấu phẩy trong C ++ là gì?
- Toán tử dấu phẩy (,) trong JavaScript là gì?
- Nhà điều hành C ưu tiên và kết hợp là gì?
- Thuật toán phân tích cú pháp trước khi vận hành trong thiết kế trình biên dịch là gì?
- Nhà điều hành ưu tiên và kết hợp trong C
- Phải làm gì để giảm bớt thời gian mol của trẻ mới biết đi?
- Truy vấn MySQL để đếm dấu phẩy từ giá trị trường?