2012-02-28 19 views
136

Có sự khác biệt đáng kể giữa giữa hai từ khóa python continuepass như trong các ví dụCó sự khác biệt nào giữa `tiếp tục` và` vượt qua` trong vòng lặp for trong python không?

for element in some_list: 
    if not element: 
     pass 

for element in some_list: 
    if not element: 
     continue 

tôi cần phải nhận thức?

+4

@ S.Lott: Ví dụ: 'while True :; pass # Busy-wait cho ngắt bàn phím (Ctrl + C) 'trong [tài liệu python] (http://docs.python.org/tutorial/controlflow.html#pass-statements) nhầm lẫn tôi trong cách, rằng tôi đã không không tìm thấy nó rõ ràng thời tiết nó cư xử tương đương với tiếp tục trong trường hợp này hoặc cái gì khác được dự định. Câu đầu tiên * "Câu lệnh pass không làm gì cả." * Mô tả tất cả các câu trả lời cho câu hỏi của tôi, nhưng bằng cách nào đó nó không lọt vào mắt tôi. – Aufwind

Trả lời

213

Có, chúng hoàn toàn khác nhau. pass chỉ đơn giản là không làm gì, trong khi continue tiếp tục với vòng lặp tiếp theo. Trong ví dụ của bạn, sự khác biệt sẽ trở nên rõ ràng nếu bạn đã thêm một tuyên bố khác sau if: Sau khi thực hiện pass, tuyên bố thêm này sẽ được thực thi. Sau continue, nó sẽ không.

>>> a = [0, 1, 2] 
>>> for element in a: 
...  if not element: 
...   pass 
...  print element 
... 
0 
1 
2 
>>> for element in a: 
...  if not element: 
...   continue 
...  print element 
... 
1 
2 
+2

i m hoàn toàn đồng ý với câu trả lời của bạn. nhưng tôi vẫn còn câu hỏi liên quan đến từ khóa vượt qua là nó cần thiết? và cần thiết nhưng tại sao? Cảm ơn bạn –

+12

@HardikGajjar: Vì từ khóa 'pass' không làm bất cứ điều gì, nó chỉ hữu ích khi bạn cú pháp cần một bộ thụt lề, nhưng không muốn làm bất cứ điều gì. Một ví dụ phổ biến là nếu bạn muốn bỏ qua một số ngoại lệ, bạn sử dụng 'ngoại trừ SomeException: pass'. Có nhiều trường hợp sử dụng khác. Bạn sẽ không cần một từ khóa cho điều này, vì bạn có thể sử dụng bất kỳ câu lệnh nào khác không làm bất cứ điều gì (ví dụ '0' là một câu lệnh hoàn toàn hợp lệ không có hiệu lực), nhưng có một từ khóa cho phép bạn phải rõ ràng hơn về việc không muốn làm bất cứ điều gì. –

3

Trong các ví dụ này, không. Nếu tuyên bố là không phải là lần cuối cùng trong vòng lặp thì chúng có rất các hiệu ứng khác nhau.

6

continue sẽ nhảy trở lại đầu vòng lặp. pass sẽ tiếp tục xử lý.

nếu vượt qua ở cuối vòng lặp, sự khác biệt là không đáng kể vì luồng sẽ chỉ trở lại đầu vòng lặp.

7

Trong ví dụ của bạn, sẽ không có sự khác biệt vì cả hai câu lệnh đều xuất hiện ở cuối vòng lặp. pass chỉ đơn giản là một trình giữ chỗ, trong đó nó không có gì (nó vượt qua thực hiện cho tuyên bố tiếp theo). Mặt khác, continue có mục đích xác định: nó báo cho vòng lặp tới tiếp tục như thể nó vừa khởi động lại.

for element in some_list: 
    if not element: 
     pass 
    print element 

rất khác so với

for element in some_list: 
    if not element: 
     continue 
    print element 
45

Vâng, có một sự khác biệt. continue buộc vòng lặp bắt đầu tại lần lặp tiếp theo trong khi pass có nghĩa là "không có mã để thực thi ở đây" và sẽ tiếp tục thông qua phần còn lại hoặc phần thân vòng lặp.

Run những điều này và thấy sự khác biệt:

for element in some_list: 
    if not element: 
     pass 
    print 1 # will print after pass 

for element in some_list: 
    if not element: 
     continue 
    print 1 # will not print after continue 
4

Vâng, có một sự khác biệt. Continue thực sự bỏ qua phần còn lại của vòng lặp hiện tại của vòng lặp (quay lại phần đầu). Pass là một câu lệnh trống không làm gì cả.

Xem python docs

1

Có sự khác biệt giữa chúng,
continue bỏ qua lần lặp hiện hành của vòng lặp và thực hiện phiên bản kế tiếp.
pass không làm gì cả. Đó là một trình giữ chỗ câu lệnh trống.
Tôi muốn cung cấp cho bạn một ví dụ, điều này sẽ làm rõ điều này tốt hơn.

>>> for element in some_list: 
...  if element == 1: 
...   print "Pass executed" 
...   pass 
...  print element 
... 
0 
Pass executed 
1 
2 

>>> for element in some_list: 
...  if element == 1: 
...   print "Continue executed" 
...   continue 
...  print element 
... 
0 
Continue executed 
2 
0
x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
     print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
     print "This statement is from continue." 

Đầu ra là

>>> This statement is from pass. 

Một lần nữa, hãy để chạy cùng mã với những thay đổi nhỏ.

x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
    print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
    print "This statement is from continue." 

Đầu ra là -

>>> This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from continue. 
This statement is from continue. 
This statement is from continue. 

đèo không làm gì cả. Tính toán không bị ảnh hưởng. Nhưng tiếp tục quay trở lại đầu vòng lặp để mua với tính toán tiếp theo.

+3

Sự khác biệt đặc biệt với các câu trả lời khác đã có sẵn là gì? –

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