Olá colegas, não entendi o que o professor quis dizer chamando a as partes de código de #lazy (preguiçoso). Alguém pode me explicar?
Olá colegas, não entendi o que o professor quis dizer chamando a as partes de código de #lazy (preguiçoso). Alguém pode me explicar?
Olá Pedro, tudo bem com você?
Uma avaliação preguiçosa (Lazy Evaluation) deixará o seus valores apenas quando necessários, por baixo dos panos o Python irá esperar ao máximo para disponibilizar o valor de uma expressão, podemos usar uma comparação com um aluno que esperar ao máximo para realizar uma atividade, realizando a mesma apenas quando solicitado pelo professor.
A Partir do Python 3 esse tipo de avaliação foi implementado com o objetivo de otimizar o uso de memória e de tempo de processo.
A função range()
é uma função do tipo lazy, ela irá criar um intervalo de números, mas essa função irá armazenar na memória apenas os valores de início (start), parada (stop), e passo (set) e irá calcular cada item do intervalo apenas quando necessário.
Tomamos como exemplo a criação de um intervalo que iniciará pelo zero (0) terá como ponto de parada dez (10) e o passo de dois (2). Lembrando que o ponto inicial é inclusivo e o ponto de parada é exclusivo, temos o código a seguir.
print(range(0, 10, 2))
Resultado
range(0, 10, 2)
Note que o resultado não foi a criação de todo intervalo (0, 2, 4, 6, 8), foi informado como resultado que a função range()
possui aqueles dados como parâmetros (start , stop, step) e que para acessarmos os elementos desse intervalo devemos solicitar esses valores, assim eles serão disponibilizado um a um, não sendo necessário disponibilizar todos os valores ao mesmo tempo, assim temos a avaliação preguiçosa (Lazy Evaluation):
for numero in range(0, 10, 2):
print(numero)
Resultado
0
2
4
6
8
Em resumo, quando o professor fala que uma parte do código é do tipo lazy, ele está fazendo referência ao tipo de execução desta parte, onde ela só irá disponibilizar algo quando for pedido, ficando em “stand-by” até ser chamado.
Para saber um pouco mais sobre avaliação preguiçosa (Lazy Evaluation), recomendo a leitura do seguinte artigo:
O artigo está em inglês, caso tenha dificuldades com o idioma recomendo o uso do tradutor do navegador.
Coloco-me à disposição em caso de dúvidas.
Abraços e bons estudos.