Postagens

Mostrando postagens de maio, 2022

Iterators e Generators em Python. O que são e por que usar?

Imagem
Iterators e Generators ? Que coisa estranha, não? Parecem coisas de outro mundo, mas eu te garanto que não são e ainda afirmo, você sempre usou ao menos uma dessas funcionalidades sem nem perceber. De forma geral, ambos funcionam como um modo de entregar dados sob demanda sem que a memória seja usada excessivamente e de forma um tanto quanto fluída. É, eu sei que você não entendeu nada, na verdade nem eu. Mas vamos simplificar isso, vamos a um exemplo. Suponhamos que temos uma função que gera uma lista de determinado tamanho, com números inteiros aleatórios entre 0 e 10 e precisamos iterar sobre esse retorno, nosso código ficaria tipo isso: import random def gera_dados(m): dados = [] for n in range (m): dados. append ( random .randint( 0 , 10 )) return dados Essa função vai funcionar? Sim, vai. Mas como pode-se ver, até completar o número de iterações que queremos,

Dunders Python, o que são? O que comem?

Imagem
Se você mexeu em um código Python que tinha classes, com certeza já viu uns métodos que iniciam e terminam com dois underscores , por exemplo, o método __init__ ou o método __str__ , estes são os mais usados, o primeiro sendo quase que obrigatório. Mas você sabe como funcionam esses métodos especiais, ou como são mais conhecidos, " métodos mágicos "? Hoje vamos explorar um pouco esse lado dessa maravilhosa linguagem. Estes tais métodos, como poucos talvez saibam, servem para especificar como prosseguir quando certas operações forem feitas . Diferentemente de muitas linguagens, no Python você pode dizer como o interpretador deve prosseguir em uma adição, por exemplo. Vejamos este exemplo: a = 1 b = 2 print( a + b) # Vai imprimir o número 3, obviamente print( a .__add__(b)) # Isso também vai funcionar e dar o mesmo resultado Deu pra ter uma ideia de como funciona, certo? Em Python, certas operações n