Apakah ada perbedaan antara `continue` dan` pass` pada for for di python?

274

Apakah ada perbedaan yang signifikan antara dua kata kunci python continuedan passseperti dalam contoh

for element in some_list:
    if not element:
        pass

dan

for element in some_list:
    if not element:
        continue

Saya harus sadar?

Aufwind
sumber
4
@ S.Lott: Contohnya: while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)dalam python docs membingungkan saya dalam hal, bahwa saya tidak merasa cuaca jelas berperilaku setara dengan melanjutkan dalam hal ini atau sesuatu yang lain dimaksudkan. Kalimat pertama "Pernyataan lulus tidak melakukan apa-apa." mencirikan semua jawaban untuk pertanyaan saya, tetapi entah bagaimana itu tidak menarik perhatian saya.
Aufwind

Jawaban:

400

Ya, mereka melakukan hal yang sangat berbeda. passhanya tidak melakukan apa-apa, sambil continuemelanjutkan dengan iterasi loop berikutnya. Dalam contoh Anda, perbedaannya akan menjadi jelas jika Anda menambahkan pernyataan lain setelah if: Setelah mengeksekusi pass, pernyataan lebih lanjut ini akan dieksekusi. Setelah continueitu, tidak akan.

>>> 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
Sven Marnach
sumber
7
Saya sangat setuju dengan jawaban Anda. tetapi saya masih memiliki pertanyaan mengenai kata kunci pass yang diperlukan? dan dibutuhkan tetapi mengapa? Terima kasih
Hardik Gajjar
34
@HardikGajjar: Karena passkata kunci tidak melakukan apa-apa, itu hanya berguna ketika Anda secara sintaksis membutuhkan rangkaian indentasi, tetapi tidak ingin melakukan apa pun. Contoh umum adalah jika Anda ingin mengabaikan beberapa pengecualian, Anda gunakan except SomeException: pass. Ada banyak kasus penggunaan lainnya juga. Anda tidak akan benar-benar membutuhkan kata kunci untuk ini, karena Anda dapat menggunakan pernyataan lain yang tidak melakukan apa-apa (mis. 0Pernyataan yang benar-benar valid yang tidak memiliki efek), tetapi memiliki kata kunci untuk ini memungkinkan Anda untuk menjadi lebih eksplisit tentang tidak ingin melakukan apa pun.
Sven Marnach
@ SvenMarnach apakah itu disukai stylistically untuk memperlakukan pengecualian pass?
3pitt
@MikePalmice Tidak sama sekali.
Matt M.
73

Ya, ada perbedaan. continuememaksa loop untuk memulai pada iterasi berikutnya sementara passberarti "tidak ada kode untuk dieksekusi di sini" dan akan terus berlanjut melalui sisa atau badan loop.

Jalankan ini dan lihat perbedaannya:

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

sumber
23

continueakan melompat kembali ke atas loop. passakan melanjutkan pemrosesan.

jika pass ada di akhir untuk loop, perbedaannya dapat diabaikan karena aliran hanya akan kembali ke atas loop.

tMC
sumber
11

Dalam contoh Anda, tidak akan ada perbedaan, karena kedua pernyataan muncul di akhir loop. passhanyalah pengganti, dalam arti tidak melakukan apa-apa (ia meneruskan eksekusi ke pernyataan berikutnya). continue, di sisi lain, memiliki tujuan yang pasti: ia memberitahu loop untuk melanjutkan seolah-olah baru saja dimulai kembali.

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

sangat berbeda dari

for element in some_list:
    if not element:
        continue
    print element
beberapa antarmuka
sumber
6

Ada perbedaan di antara mereka,
continuemelompati iterasi loop saat ini dan mengeksekusi iterasi berikutnya.
passtidak melakukan apa-apa. Ini adalah placeholder pernyataan kosong.
Saya lebih suka memberi Anda contoh, yang akan menjelaskan ini lebih baik.

>>> 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
Berjalan
sumber
5

Ya, ada perbedaan. Continuesebenarnya melewatkan sisa iterasi saat ini dari loop (kembali ke awal). Passadalah pernyataan kosong yang tidak melakukan apa pun.

Lihat dokumen python

froadie
sumber
4

Dalam contoh-contoh itu, tidak. Jika pernyataan itu bukan yang terakhir dalam loop maka mereka memiliki efek yang sangat berbeda.

Ignacio Vazquez-Abrams
sumber
3

Perbedaan antara pass dan melanjutkan dalam for loop:

Jadi mengapa harus menggunakan python?

Jika Anda ingin membuat kelas kosong, metode, atau blok.

Contoh:

class MyException(Exception):
    pass


try:
   1/0
 except:
   pass

tanpa 'lulus' dalam contoh di atas akan melempar IndentationError.

Joby Wilson Mathews
sumber
1
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."

Outputnya adalah

>>> This statement is from pass.

Sekali lagi, mari jalankan kode yang sama dengan perubahan kecil.

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."

Outputnya adalah -

>>> 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 tidak melakukan apa pun. Komputasi tidak terpengaruh. Tetapi terus kembali ke atas loop untuk diproses dengan perhitungan berikutnya.

Raviteja Ainampudi
sumber
3
Apa perbedaan khusus dengan jawaban lain yang sudah tersedia?
BHUVANESH MOHANKUMAR
1

Pertimbangkan seperti ini:

Lulus: Python bekerja murni berdasarkan indentasi! Tidak ada kurung kurawal yang kosong, tidak seperti bahasa lain.

Jadi, jika Anda tidak ingin melakukan apa-apa jika suatu kondisi benar, tidak ada pilihan lain selain lulus.

Lanjutkan: Ini hanya berguna jika terjadi loop. Dalam hal, untuk rentang nilai, Anda tidak ingin menjalankan pernyataan loop yang tersisa setelah kondisi itu benar untuk pass tertentu, maka Anda harus menggunakan lanjut.

Vaishali
sumber
Jadi, jika Anda tidak ingin melakukan apa-apa jika kondisi benar, tidak ada pilihan selain lulus -> ini tidak akurat, lihat misalnya komentar Sven Marnach di atas.
patrick
1
@ Patrick Maaf, tapi dia benar. Dalam kasus di mana, misalnya, variabel dapat berupa float dan int, dan Anda ingin melakukan operasi pada semua int, maka Anda bisa menggunakan pernyataan-if yang memeriksa float, gunakan a passjika pernyataan tersebut adalah Truedan melakukan operasi jika itu False. Ini memungkinkan pemindaian daftar multi-guna yang efisien.
1313e
0

passdapat digunakan dalam skenario ketika Anda memerlukan beberapa fungsi kosong, kelas atau loop untuk implementasi di masa depan, dan tidak ada persyaratan untuk mengeksekusi kode apa pun.
continuedigunakan dalam skenario ketika tidak ada ketika beberapa kondisi telah bertemu dalam satu lingkaran dan Anda harus melewati iterasi saat ini dan pindah ke yang berikutnya.

prafi
sumber