Yanıtlar:
Evet, tamamen farklı şeyler yapıyorlar. pass
bir continue
sonraki döngü yinelemesiyle devam ederken, hiçbir şey yapmaz . Örneğinizde, aşağıdakilerden sonra başka bir ifade eklerseniz fark görünür hale gelir if
: Yürütüldükten sonra pass
bu ek ifade yürütülür. Sonra continue
, olmazdı.
>>> 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
Anahtar kelime hiçbir şey yapmadığından, yalnızca sözdizimsel olarak girintili bir pakete ihtiyacınız olduğunda, ancak hiçbir şey yapmak istemediğinizde kullanışlıdır. Yaygın bir örnek, bazı istisnaları yoksaymak istiyorsanız, kullanırsınız except SomeException: pass
. Başka birçok kullanım durumu da var. Bunun için kesinlikle bir anahtar kelimeye ihtiyacınız yoktur, çünkü hiçbir şey yapmayan başka bir ifadeyi kullanabilirsiniz (örneğin 0
, etkisi olmayan mükemmel geçerli bir ifadedir), ancak bunun için bir anahtar kelimeye sahip olmanız, hiçbir şey yapmak istememe konusunda daha açık.
pass
mı?
Evet, bir fark var. continue
döngüyü bir sonraki yinelemede başlamaya zorlarkenpass
, "burada yürütülecek kod yoktur" anlamına gelir ve geri kalanı veya döngü gövdesi boyunca devam eder.
Bunları çalıştırın ve farkı görün:
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
Örneğinizde, her iki ifade de döngünün sonunda göründüğünden, hiçbir fark olmayacaktır. pass
basitçe bir yer tutucudur, çünkü hiçbir şey yapmaz ( yürütmeyi bir sonraki ifadeye geçirir ). continue
Öte yandan, kesin bir amacı vardır: döngüye yeni başlamış gibi devam etmesini söyler .
for element in some_list:
if not element:
pass
print element
çok farklı
for element in some_list:
if not element:
continue
print element
Aralarında bir fark vardır, continue
döngünün geçerli yinelemesini atlar ve bir sonraki yinelemeyi yürütür. pass
hiç birşey yapmıyor. Boş bir ifade yer tutucusudur.
Size bunu daha iyi netleştirecek bir örnek vermeyi tercih ederim.
>>> 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
Evet, bir fark var. Continue
aslında döngünün mevcut yinelemesinin geri kalanını atlar (başa dönerek). Pass
hiçbir şey yapmayan boş bir ifadedir.
Python belgelerine bakın
Bu örneklerde, hayır. İfadesi ise değil döngüde en son o zaman sahip oldukları çok farklı etkileri.
For döngüsünde pass ve continue arasındaki fark:
Peki neden python'a geçelim?
Boş bir sınıf, yöntem veya blok oluşturmak istiyorsanız.
Örnekler:
class MyException(Exception):
pass
try:
1/0
except:
pass
yukarıdaki örneklerde 'pass' olmadan IndentationError atar.
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."
Çıktı
>>> This statement is from pass.
Yine, küçük değişiklikler ile aynı kodu çalıştırın.
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."
Çıktı -
>>> 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 hiçbir şey yapmaz. Hesaplama etkilenmez. Ancak devam et, bir sonraki hesaplama ile ilerlemek için döngünün başına dönüyor.
Şu şekilde düşünün:
Pass: Python tamamen girinti üzerinde çalışıyor! Diğer dillerden farklı olarak boş kıvırcık ayraçlar yoktur.
Bu nedenle, bir koşulun doğru olması durumunda hiçbir şey yapmak istemiyorsanız, geçmek dışında bir seçenek yoktur.
Devam et: Bu yalnızca döngüler olması durumunda kullanışlıdır. Bir değer aralığı için, söz konusu geçiş için bu koşul geçerli olduktan sonra döngünün kalan ifadelerini yürütmek istemezseniz, devam'ı kullanmanız gerekir.
pass
; True
ve varsa işlemi gerçekleştirin False
. Bu, çok amaçlı listelerin verimli bir şekilde taranmasını sağlar.
pass
gelecekteki uygulamalar için bazı boş işlevlere, sınıflara veya döngülere ihtiyaç duyduğunuzda senaryolarda kullanılabilir ve herhangi bir kod yürütmeye gerek yoktur.
continue
bir döngü içinde bazı koşullar karşılanmadığında ve geçerli yinelemeyi atlayıp bir sonrakine geçmeniz gerektiğinde senaryolarda kullanılır.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
in piton docs ben başka düşünülmüştü bu durumda falan devam eşdeğer davranır net hava bulamadık, bir şekilde beni karıştı. İlk cümle "Pass deyimi hiçbir şey yapmaz." sorumun tüm cevaplarını karakterize ediyor, ama bir şekilde gözüme çarpmadı.