Nhiều lập trình viên Python có thể không biết rằng cú pháp của while
vòng lặp và for
vòng lặp bao gồm một else:
mệnh đề tùy chọn :
for val in iterable:
do_something(val)
else:
clean_up()
Phần thân của else
mệnh đề là một vị trí tốt cho một số loại hành động dọn dẹp nhất định và được thực hiện khi chấm dứt bình thường của vòng lặp: Tức là, thoát khỏi vòng lặp với return
hoặc break
bỏ qua else
mệnh đề; thoát ra sau khi continue
thực hiện nó Tôi biết điều này chỉ vì tôi chỉ nhìn nó (một lần nữa), bởi vì tôi không bao giờ có thể nhớ khi các else
điều khoản được thực thi.
Luôn luôn? Về "thất bại" của vòng lặp, như tên cho thấy? Ngày chấm dứt thường xuyên? Ngay cả khi vòng lặp được thoát với return
? Tôi không bao giờ có thể hoàn toàn chắc chắn mà không cần tìm kiếm nó.
Tôi đổ lỗi cho sự không chắc chắn dai dẳng của tôi đối với việc lựa chọn từ khóa: Tôi thấy else
vô cùng thiếu sót đối với ngữ nghĩa này. Câu hỏi của tôi không phải là "tại sao từ khóa này được sử dụng cho mục đích này" (mà tôi có thể bỏ phiếu để đóng, mặc dù chỉ sau khi đọc câu trả lời và nhận xét), nhưng tôi có thể nghĩ về else
từ khóa như thế nào để ngữ nghĩa của nó có ý nghĩa, và tôi Do đó có thể nhớ nó?
Tôi chắc chắn đã có một số lượng lớn các cuộc thảo luận về vấn đề này và tôi có thể tưởng tượng rằng sự lựa chọn được đưa ra để thống nhất với điều khoản try
của tuyên bố else:
(mà tôi cũng phải tìm kiếm) và với mục tiêu không thêm vào danh sách Những từ dành riêng của Python. Có lẽ các lý do cho việc lựa chọn else
sẽ làm rõ chức năng của nó và làm cho nó dễ nhớ hơn, nhưng tôi sau khi kết nối tên với chức năng, không phải sau khi giải thích lịch sử.
Các câu trả lời cho câu hỏi này , mà câu hỏi của tôi đã được đóng lại ngắn gọn như một bản sao, chứa rất nhiều câu chuyện ngược thú vị. Câu hỏi của tôi có trọng tâm khác nhau (làm thế nào để kết nối ngữ nghĩa cụ thể else
với lựa chọn từ khóa), nhưng tôi cảm thấy nên có một liên kết đến câu hỏi này ở đâu đó.
else
phương tiện cơ bản, "nếu điều kiện tiếp tục thất bại". Trong một vòng lặp for truyền thống, điều kiện tiếp tục thường là i < 42
, trong trường hợp đó, bạn có thể xem phần đó làif i < 42; execute the loop body; else; do that other thing
break
. Trường hợp sử dụng chính tắc là khi vòng lặp tìm kiếm một cái gì đó và phá vỡ khi nó tìm thấy nó. Việc else
này chỉ được thực hiện nếu không tìm thấy gì.