Respostas:
Sim, eles fazem coisas completamente diferentes. pass
simplesmente não faz nada, enquanto continue
continua com a próxima iteração do loop. No seu exemplo, a diferença se tornaria aparente se você adicionasse outra instrução após o if
: Após a execução pass
, essa instrução adicional seria executada. Depois continue
, não.
>>> 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
palavra - chave não faz nada, ela só é útil quando você precisa sintaticamente de um conjunto recuado, mas não quer fazer nada. Um exemplo comum é se você deseja ignorar alguma exceção, você usa except SomeException: pass
. Existem muitos outros casos de uso também. Você não precisaria estritamente de uma palavra-chave para isso, pois você poderia usar qualquer outra declaração que não faça nada (por exemplo, 0
é uma declaração perfeitamente válida que não tem efeito), mas ter uma palavra-chave para isso permite que você seja mais explícito sobre não querer fazer nada.
pass
?
Sim, há uma diferença. continue
força o loop a iniciar na próxima iteração, enquanto pass
significa "não há código para executar aqui" e continuará pelo restante ou pelo corpo do loop.
Execute estes e veja a diferença:
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
No seu exemplo, não haverá diferença, pois as duas instruções aparecem no final do loop. pass
é simplesmente um espaço reservado, na medida em que não faz nada ( passa a execução para a próxima instrução). continue
, por outro lado, tem um objetivo definido: diz ao loop para continuar como se tivesse acabado de reiniciar.
for element in some_list:
if not element:
pass
print element
é muito diferente de
for element in some_list:
if not element:
continue
print element
Há uma diferença entre eles, continue
ignora a iteração atual do loop e executa a próxima iteração. pass
faz nada. É um espaço reservado para declaração vazio.
Prefiro dar um exemplo, que esclarecerá isso melhor.
>>> 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
Sim, há uma diferença. Continue
realmente pula o restante da iteração atual do loop (retornando ao início). Pass
é uma declaração em branco que não faz nada.
Veja os documentos python
Nesses exemplos, não. Se a declaração não for a última do loop, eles terão efeitos muito diferentes.
Diferença entre passar e continuar em um loop for:
Então, por que passar em python?
Se você deseja criar uma classe, método ou bloco vazio.
Exemplos:
class MyException(Exception):
pass
try:
1/0
except:
pass
sem 'pass' nos exemplos acima lançará 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."
A saída é
>>> This statement is from pass.
Novamente, vamos executar o mesmo código com pequenas alterações.
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."
A saída é -
>>> 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 passe não faz nada. A computação não é afetada. Mas continue volta ao topo do loop para prosseguir com o próximo cálculo.
Considere desta maneira:
Passe: Python funciona puramente em recuo! Não há chaves vazias, ao contrário de outros idiomas.
Portanto, se você não quiser fazer nada, caso uma condição seja verdadeira, não há outra opção senão passar.
Continuar: Isso é útil apenas em caso de loops. Caso, para um intervalo de valores, você não queira executar as instruções restantes do loop depois que a condição for verdadeira para essa passagem específica, será necessário usar continue.
pass
se a instrução for True
e execute a operação, se estiver False
. Isso permite uma varredura eficiente de listas multiuso.
pass
pode ser usado em cenários quando você precisa de algumas funções, classes ou loops vazios para futuras implementações e não há necessidade de executar qualquer código.
continue
é usado em cenários em que não quando alguma condição se encontra dentro de um loop e você precisa pular a iteração atual e passar para a próxima.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
nos documentos python me confundiram do jeito que eu não achei tempo claro que se comporta de maneira equivalente a continuar nesse caso ou se pretendia algo mais. A primeira frase "A declaração de aprovação não faz nada". caracteriza todas as respostas à minha pergunta, mas de alguma forma isso não chamou minha atenção.