Câu trả lời:
Vâng, họ làm những điều 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 câu lệnh khác sau if
: Sau khi thực hiện pass
, câu lệnh tiếp theo 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
pass
từ khóa không làm gì cả, nó chỉ hữu ích khi bạn cần một bộ công cụ thụt lề, nhưng không muốn làm gì cả. 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 except SomeException: pass
. Có nhiều trường hợp sử dụng khác là tốt. Bạn sẽ không thực sự cần một từ khóa cho việc 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 gì cả (ví dụ: 0
một câu lệnh hoàn toàn hợp lệ không có tác dụng), nhưng có một từ khóa cho phép này là cho phép bạn rõ ràng hơn về việc không muốn làm bất cứ điều gì.
pass
?
Có một sự khác biệt. continue
buộc vòng lặp bắt đầu ở 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 thân vòng lặp.
Chạy chúng 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
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 làm gì cả (nó chuyển thực thi sang câu lệnh tiếp theo). continue
mặt khác, có một mục đích xác định: nó bảo vòng lặp tiếp tục như thể nó vừa được khởi động lại.
for element in some_list:
if not element:
pass
print element
rất khác với
for element in some_list:
if not element:
continue
print element
Có một sự khác biệt giữa chúng, continue
bỏ qua lần lặp hiện tại của vòng lặp và thực hiện lần lặp tiếp theo. pass
Không lam gi cả. Đó là một giữ chỗ tuyên bố trống.
Tôi muốn cung cấp cho bạn một ví dụ, 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
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 (trở lại từ đầu). Pass
là một tuyên bố trống không làm gì.
Xem tài liệu trăn
Trong những ví dụ đó, không. Nếu câu lệnh không phải là cuối cùng trong vòng lặp thì chúng có hiệu ứng rất khác nhau.
Sự khác biệt giữa vượt qua và tiếp tục trong một vòng lặp for:
Vậy tại sao lại vượt qua trong trăn?
Nếu bạn muốn tạo một lớp trống, phương thức hoặc khối.
Ví dụ:
class MyException(Exception):
pass
try:
1/0
except:
pass
không có 'vượt qua' trong các ví dụ trên sẽ ném IndentationError.
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.
Pass 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 để mua với tính toán tiếp theo.
Hãy xem xét nó theo cách này:
Vượt qua: Python hoạt động hoàn toàn trên thụt lề! Không có dấu ngoặc nhọn trống, không giống như các ngôn ngữ khác.
Vì vậy, nếu bạn không muốn làm gì trong trường hợp điều kiện là đúng thì không có lựa chọn nào khác ngoài pass.
Tiếp tục: Điều này chỉ hữu ích trong trường hợp các vòng lặp. Trong trường hợp, đối với một phạm vi các giá trị, bạn không muốn thực thi các câu lệnh còn lại của vòng lặp sau khi điều kiện đó đúng với đường chuyền cụ thể đó, thì bạn sẽ phải tiếp tục sử dụng.
pass
câu lệnh if True
và thực hiện các hoạt động nếu có False
. Điều này cho phép quét hiệu quả các danh sách đa mục đích.
pass
có thể được sử dụng trong các tình huống khi bạn cần một số hàm, lớp hoặc vòng lặp trống để triển khai trong tương lai và không có yêu cầu thực thi bất kỳ mã nào.
continue
được sử dụng trong các tình huống khi không khi một số điều kiện đã gặp trong một vòng lặp và bạn cần bỏ qua bước lặp hiện tại và chuyển sang điều kiện tiếp theo.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
trong tài liệu python nhầm lẫn tôi vào con đường, mà tôi không tìm thấy nó thời tiết rõ ràng nó cư xử tương đương với tiếp tục trong trường hợp này hay 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 bắt mắt tôi.