A definição da continue
declaração é:
A
continue
instrução continua com a próxima iteração do loop.
Não consigo encontrar bons exemplos de código.
Alguém poderia sugerir alguns casos simples, quando continue
necessário?
Aqui está um exemplo simples:
for letter in 'Django':
if letter == 'D':
continue
print("Current Letter: " + letter)
A saída será:
Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o
Ele continua na próxima iteração do loop.
continue
faz, mas não excessivamente útil, quando você poderia fazerif letter != 'D': print 'Current Letter:', letter
Eu gosto de usar continue em loops, onde há muitas competições a serem cumpridas antes de você começar a trabalhar. Então, em vez de código como este:
Eu recebo código como este:
Ao fazer isso dessa maneira, evito código profundamente aninhado. Além disso, é fácil otimizar o loop eliminando os casos que ocorrem com mais frequência primeiro, para que eu tenha que lidar apenas com os casos pouco frequentes, mas importantes (por exemplo, o divisor é 0) quando não há nenhum outro limitador de exibição.
fonte
continue
dessa maneira é semelhante ao usoGOTO
. No entanto, esta é a maneira correta de usarGOTO
.Geralmente, a situação em que continuar é necessária / útil é quando você deseja pular o código restante no loop e continuar a iteração.
Realmente não acredito que seja necessário, pois você sempre pode usar as instruções if para fornecer a mesma lógica, mas pode ser útil aumentar a legibilidade do código.
fonte
if <condition>: continue
vez deif not <condition>: ...
evitar um nível de indentação que seria necessário se fosse escrito sem ele.continue
declaração, estamos basicamente pulando de uma seção de testes condicionais e permitindo que a iteração do loop continue. para a próxima iteração? Não está claro para mim como isso seria melhor do que usarelse
. É tudo uma questão de legibilidade aprimorada e desempenho em tempo de execução?continue é uma declaração de controle extremamente importante. O código acima indica uma aplicação típica, onde o resultado de uma divisão por zero pode ser evitado. Eu o uso frequentemente quando preciso armazenar a saída de programas, mas não quero armazenar a saída se o programa falhar. Observe que, para testar o exemplo acima, substitua a última instrução por print 1 / float (x), ou você obterá zeros sempre que houver uma fração, pois randint retorna um número inteiro. Eu o omiti por clareza.
fonte
Algumas pessoas comentaram sobre legibilidade, dizendo: "Oh, isso não ajuda muito a legibilidade, quem se importa?"
Suponha que você precise de uma verificação antes do código principal:
Observe que você pode fazer isso depois que o código principal foi gravado sem alterá-lo. Se você difere o código, somente a linha adicionada com "continuar" será destacada, pois não há alterações de espaçamento no código principal.
Imagine se você tiver que fazer um pequeno código de produção, que acaba adicionando uma linha com continue. É fácil ver que essa é a única alteração quando você revisa o código. Se você começar a agrupar o código principal em if / else, o diff destacará o código recuado, a menos que você ignore as alterações de espaçamento, o que é perigoso principalmente no Python. Acho que, a menos que você esteja na situação em que precisa implantar código em pouco tempo, talvez não aprecie isso completamente.
fonte
fonte
continue
declaração adiciona aqui? Poderia ser eliminado usandoelement not in colors
, e o código seria igualmente legível.Digamos que queremos imprimir todos os números que não sejam múltiplos de 3 e 5
fonte
if x %3 == 0 or x % 5 == 0:
,pass
,else:
,print x
continue
. Minha conclusão é que nunca há uma necessidade , mas em alguns casos (como este) o código é mais legível usandocontinue
. É um exemplo muito bom.Não é absolutamente necessário, pois pode ser feito com IFs, mas é mais legível e também mais barato em tempo de execução.
Eu o uso para pular uma iteração em um loop se os dados não atenderem a alguns requisitos:
Resultado:
Como você pode ver, o valor errado não chegou depois da
continue
declaração.fonte
if
só pode fazer o quecontinue
faz se todo o código estiver contido em um bloco.continue
ignora o código que está fora doif
bloco.Por exemplo, se você deseja fazer coisas diferentes, dependendo do valor de uma variável:
No exemplo acima, se eu usar
break
o intérprete, pulará o loop. Mas comcontinue
ele apenas pula as instruções if-elif e vai diretamente para o próximo item do loop.fonte
my_var
de0
.continue
.elif
deve ser umif
. O código simplesmente não parece que você sabe o que está fazendo.continue
simplesmente pula o restante do código no loop até a próxima iteraçãofonte