Risposte:
Sì, fanno cose completamente diverse. pass
semplicemente non fa nulla, mentre continue
continua con l'iterazione del ciclo successivo. Nel tuo esempio, la differenza risulterebbe evidente se aggiungessi un'altra istruzione dopo if
: Dopo l'esecuzione pass
, questa ulteriore istruzione verrà eseguita. Dopo continue
, non lo farebbe.
>>> 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
parola chiave non fa nulla, è utile solo quando hai bisogno sintatticamente di una suite rientrata, ma non vuoi fare nulla. Un esempio comune è se si desidera ignorare qualche eccezione, si utilizza except SomeException: pass
. Esistono anche molti altri casi d'uso. Non avresti strettamente bisogno di una parola chiave per questo, dal momento che potresti usare qualsiasi altra istruzione che non fa nulla (ad esempio 0
è un'istruzione perfettamente valida che non ha alcun effetto), ma avere una parola chiave per questo ti consente di essere più esplicito di non voler fare nulla.
pass
?
Sì, c'è differenza. continue
impone che il ciclo inizi alla successiva iterazione mentre pass
significa "non c'è codice da eseguire qui" e continuerà attraverso il resto o il corpo del ciclo.
Esegui questi e vedi la differenza:
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
Nel tuo esempio, non ci sarà alcuna differenza, poiché entrambe le istruzioni appaiono alla fine del ciclo. pass
è semplicemente un segnaposto, in quanto non fa nulla ( passa l' esecuzione alla dichiarazione successiva). continue
d'altra parte, ha uno scopo preciso: dice al loop di continuare come se fosse appena stato riavviato.
for element in some_list:
if not element:
pass
print element
è molto diverso da
for element in some_list:
if not element:
continue
print element
C'è una differenza tra loro, continue
salta l'iterazione corrente del ciclo ed esegue l'iterazione successiva. pass
non fa nulla. È un segnaposto vuoto.
Preferirei darvi un esempio, che chiarirà meglio questo aspetto.
>>> 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
Sì, c'è differenza. Continue
salta effettivamente il resto dell'iterazione corrente del loop (tornando all'inizio). Pass
è un'istruzione vuota che non fa nulla.
Vedi i documenti di Python
In quegli esempi, no. Se l'istruzione non è l'ultima nel ciclo, hanno effetti molto diversi.
Differenza tra pass e continue in un ciclo for:
Quindi perché passare in pitone?
Se si desidera creare una classe, un metodo o un blocco vuoti.
Esempi:
class MyException(Exception):
pass
try:
1/0
except:
pass
senza "pass" negli esempi sopra genererà 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."
L'output è
>>> This statement is from pass.
Ancora una volta, esegui lo stesso codice con modifiche minori.
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."
L'output è -
>>> 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 non fa nulla. Il calcolo non è interessato. Ma continue torna all'inizio del ciclo per essere processato con il calcolo successivo.
Consideralo in questo modo:
Pass: Python funziona esclusivamente su rientro! Non ci sono parentesi graffe vuote, a differenza di altre lingue.
Quindi, se non si desidera fare nulla nel caso in cui una condizione sia vera, non esiste altra opzione che passare.
Continua: è utile solo in caso di loop. Nel caso in cui, per un intervallo di valori, non desideri eseguire le restanti istruzioni del ciclo dopo che quella condizione è vera per quel particolare passaggio, dovrai usare continue.
pass
se l'istruzione è True
ed esegui l'operazione se lo è False
. Ciò consente una scansione efficiente di elenchi multiuso.
pass
potrebbe essere utilizzato in scenari in cui sono necessarie alcune funzioni, classi o loop vuoti per future implementazioni e non è necessario eseguire alcun codice.
continue
viene utilizzato in scenari in cui no quando si è verificata una condizione all'interno di un ciclo ed è necessario saltare l'iterazione corrente e passare a quella successiva.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
nei documenti di Python mi ha confuso il modo in cui non ho trovato il tempo limpido che si comporta in modo equivalente a continuare in questo caso o qualcos'altro era previsto. La prima frase "L'istruzione pass non fa nulla". caratterizza tutte le risposte alla mia domanda, ma in qualche modo non ha attirato la mia attenzione.