2016-05-17 21 views
7

Tại sao Python không có vòng lặp 'do while' giống như nhiều ngôn ngữ lập trình khác, chẳng hạn như C?Python: Tại sao không có vòng lặp while trong python

Ví dụ: Trong C chúng ta phải làm trong khi vòng lặp như sau:

do { 
    statement(s); 
} while(condition); 
+3

Trạng thái * Bị từ chối *: https://www.python.org/dev/peps/pep-0315/ –

+2

Sao chép có thể xảy ra [Mô phỏng vòng lặp do-while trong Python?] (Http: // stackoverflow. com/questions/743164/thi đua-a-do-while-loop-in-python) – miradulo

+0

Thông báo giữ lại: Liên kết được cung cấp bởi Martijn trông không dựa trên ý kiến: "Những nỗ lực tiếp theo để phục hồi PEP trong tháng 4 năm 2009 đã không gặp thành công vì không có cú pháp nào xuất hiện mà có thể cạnh tranh ... " –

Trả lời

15

Không có do...while loop vì không có cách nào tốt đẹp để xác định một phù hợp trong mẫu statement: indented block sử dụng bởi mỗi khác Tuyên bố hợp chất Python. Vì những đề xuất như vậy để thêm cú pháp như vậy chưa bao giờ đạt được thỏa thuận.

Cũng không có thực sự bất kỳ cần để có một cấu trúc như vậy, không phải khi bạn chỉ có thể làm:

while True: 
    # statement(s) 
    if not condition: 
     break 

và có tác dụng chính xác giống như một C do { .. } while condition vòng lặp.

Xem PEP 315 -- Enhanced While Loop:

Bị từ chối [...] vì không có cú pháp xuất hiện mà có thể cạnh tranh với các hình thức sau đây:

while True: 
     <setup code> 
     if not <condition>: 
      break 
     <loop body> 

Một cú pháp thay thế cho một trong những đề xuất trong PEP là được tìm thấy cho vòng lặp do-while cơ bản nhưng nó đã nhận được ít hỗ trợ vì điều kiện ở trên cùng:

do ... while <cond>: 
     <loop body> 

hoặc, như Guido van Rossum put it:

hãy từ chối PEP. Các biến thể khác dọc theo các dòng này sẽ không làm cho ngôn ngữ thanh lịch hơn hoặc dễ học hơn. Họ chỉ cần tiết kiệm một vài người vội vàng một số người gõ trong khi làm cho những người khác phải đọc/duy trì mã của họ tự hỏi ý nghĩa của nó.

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