Tenho uma dúvida: o while e o for são estruturas de repetição (loops) que permitem executar uma ação várias vezes. Mas se eu chamar uma função repetidamente, sempre que o resultado esperado não for alcançado, isso também acaba funcionando como um loop.
Qual é a diferença entre usar um loop (while ou for) e chamar uma função dessa forma?
Se eu ficar chamando a função, ela vai deixar informações na memória e, com o tempo, essa memória pode ficar cheia. Já os loops, se eu deixá-los rodando para sempre, o programa nunca vai parar — isso também pode causar problemas de memória?
Para testar, criei uma função em Python que acaba se comportando como um loop, semelhante ao while.
def conectar(senha = '12345678', conectado = False, tentativas = 3, tempo_espera = 5):
if conectado:
print('Já está conectado!')
else:
if input('Digite a senha para conectar: ') == senha:
print('Conectado com sucesso!')
conectado = True
else:
tentativas -= 1
print(f'Senha incorreta! Você ainda tem {tentativas} tentativas.')
if tentativas == 0:
print(f'Muitas tentativas incorretas! Aguarde {tempo_espera} segundos para tentar novamente.')
sleep(tempo_espera)
tentativas = 3
conectar(senha=senha, conectado=conectado, tentativas= tentativas,tempo_espera=tempo_espera)