- SBEF: Simpósio Brasileiro de Engenharia Física
Iterators, generators, decorators, classes, constructors, etc.: palavras-chaves na biblioteca padrão python que a maioria dos que o usam não conhece! A maior parte dos usuários de python utiliza menos de 10% das capacidades da linguagem. Com isso, frequentemente encontramos códigos com dezenas de linhas que poderiam ser compactados para menos de cinco... o que leva a códigos com tempo de execução de minutos que poderiam demorar apenas frações de segundo. Além desse problema, boa parte dos usuários não estrutura seus códigos, copiando e colando fragmentos muitas vezes obsoletos da internet, sem saber o que realmente fazem. Os códigos acabam então se tornando dinossauros-frankensteins digitais: lentos, ineficientes, pesados e fadados à extinção. Mas a boa notícia é que estruturar códigos é mais fácil do que muitos pensam. Basta um pouco de dedicação para se conseguir uma visão estruturada e criar códigos limpos e racionais, extremamente eficientes e claros. É o que pretendo demonstrar neste curso.
Apesar da pretensão que transpira do resumo acima, é preciso dizer que todos estamos sempre aprendendo. Examino meus códigos antigos e vejo que poderia ter implementado coisas de modo diferente, usando recursos que conheci apenas depois, aproveitando sacadas e macetes que fui descobrindo e inventando ao longo do tempo. A caminhada nunca termina. Portanto, se seu código parece longo e ineficiente, é porque você ainda não conhece python o suficiente. E, mesmo que conheça, e ache que não dá pra fazer melhor --- você está quase certamente enganado! É provável que exista algum recurso do python padrão, ou em algum módulo adicional, que tornará seu código ainda mais eficiente. A caminhada nunca termina. Existem aqueles que se dão por satisfeitos quando o código funciona, ainda que não seja muito eficiente. Mas existem outros que buscam sempre, assintoticamente, a perfeição inatingível. Para estes, e não aqueles, a caminhada nunca termina. Mas chegarão mais longe.
Prof. Dr. Luiz T. F. Eleno
https://www.demar.eel.usp.br/docentes/luiz-tadeu-fernandes-eleno.html
- Generalidades: variáveis de ambiente e atributos
- Objetos iteráveis
iter()
enext()
- percorrendo iteráveis simultaneamente --
zip()
- a declaração
yield
- abrangência (comprehension) e iteráveis
- Funções
- argumentos posicionais e nomeados; obrigatórios e opcionais
- anotações de função
- funções anônimas (com o construtor
lambda
) - variáveis locais, não-locais, livres e globais
- closure e funções de funções
- módulo
functools
:partial
e@cache
decorators
i. alguns decoradores padrão:classmethod
estaticmethod
- Classes e objetos
constructors
- sobrecarga de operadores
- herança
- Mark Lutz, Python Pocket Reference, 5ed.
- Luciano Ramalho, Python fluente.
- https://realpython.com/python-kwargs-and-args
- https://realpython.com/python-zip-function
- https://docs.python.org/3/library/functools.html
- https://realpython.com/python-class-constructor
- https://realpython.com/primer-on-python-decorators
- https://realpython.com/inheritance-composition-python