Think Python, 3ª edição
(allendowney.github.io)- Um livro introdutório de Python para quem está aprendendo programação pela primeira vez ou teve dificuldades em estudos anteriores; a edição impressa e o e-book da 3ª edição estão disponíveis para encomenda
- O livro inteiro é no formato de Jupyter Notebook, permitindo ler o texto, executar código e resolver exercícios em um único fluxo
- Os notebooks de cada capítulo podem ser executados diretamente no Colab, facilitando o início dos estudos sem instalação separada
- A 3ª edição reorganiza o fluxo de aprendizagem com revisões no texto, ajustes na ordem de alguns capítulos e ampliação dos exercícios
- As sugestões ao fim de cada capítulo sobre uso do ChatGPT e do Colab AI servem como recursos auxiliares para obter explicações adicionais e ajuda com exercícios quando houver dificuldades
Livro introdutório de Python para iniciantes
- Think Python é um livro introdutório de Python para quem está tendo o primeiro contato com programação ou para quem já tentou antes, mas teve dificuldades
- A edição impressa e o e-book da 3ª edição podem ser encomendados na Bookshop.org e na Amazon
- A landing page do livro da Green Tea Press pode ser vista em Think Python 3rd Edition
- A 3ª edição organiza o livro inteiro em Jupyter Notebooks, reunindo texto, código executável e exercícios em um só lugar
- Os notebooks podem ser executados no Colab, reduzindo a necessidade de instalação
- O texto foi substancialmente revisado e a ordem de alguns capítulos foi reorganizada
- Há mais exercícios
- Ao fim de cada capítulo, há orientações sobre como usar o ChatGPT e o Colab AI no estudo e na resolução dos exercícios
Notebooks do Colab e materiais para uso em aula
-
Notebooks por capítulo
- O conjunto completo de notebooks é oferecido em 19 capítulos
- Capítulo 1: Programming as a way of thinking — Executar no Colab
- Capítulo 2: Variables and Statements — Executar no Colab
- Capítulo 3: Functions — Executar no Colab
- Capítulo 4: Functions and Interfaces — Executar no Colab
- Capítulo 5: Conditionals and Recursion — Executar no Colab
- Capítulo 6: Return Values — Executar no Colab
- Capítulo 7: Iteration and Search — Executar no Colab
- Capítulo 8: Strings and Regular Expressions — Executar no Colab
- Capítulo 9: Lists — Executar no Colab
- Capítulo 10: Dictionaries — Executar no Colab
- Capítulo 11: Tuples — Executar no Colab
- Capítulo 12: Text Analysis and Generation — Executar no Colab
- Capítulo 13: Files and Databases — Executar no Colab
- Capítulo 14: Classes and Functions — Executar no Colab
- Capítulo 15: Classes and Methods — Executar no Colab
- Capítulo 16: Classes and Objects — Executar no Colab
- Capítulo 17: Inheritance — Executar no Colab
- Capítulo 18: Python Extras — Executar no Colab
- Capítulo 19: Final Thoughts — Executar no Colab
-
Materiais para professores
- Os notebooks com soluções podem ser baixados no repositório GitHub ThinkPythonSolutions
- Os quizzes de cada capítulo e um quiz abrangente sobre o livro inteiro são fornecidos mediante solicitação
- É possível ler sobre como usar Jupyter de forma eficaz em aulas no livro online Teaching and Learning with Jupyter
- Em aulas baseadas em notebooks, o instrutor pode usar o formato de live coding, em que escreve o código e os alunos acompanham em seus próprios notebooks
- Materiais de treinamento de instrutores para ensino de programação estão disponíveis em Instructor Training, da The Carpentries
- Os notebooks em branco, que mantêm o texto original mas removem a maior parte do código, são úteis para exercícios guiados em que os alunos preenchem as lacunas, e estão organizados em blank notebooks
1 comentários
Opiniões no Hacker News
Fico muito feliz com esta notícia. Quando publicamos Practical Deep Learning for Coders em Jupyter Notebook, conversei com Allen sobre fazer alguns dos livros dele do mesmo jeito.
Agora isso está realmente acontecendo e, melhor ainda, eles acrescentaram ferramentas legais como uma turtle baseada em Jupyter, que mostra gráficos inline dentro do notebook.
Acho que, quando for lançado, tem grande chance de se tornar a melhor forma de aprender programação em Python.
Lembro que, no passado, eu também mostrei uma prova de conceito convertendo parte da 2ª edição deste livro para notebooks nbdev: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
Esse notebook é renderizado neste HTML: https://fastai.github.io/nbdev_cards/deck.html
Quando aprendo uma nova linguagem com algo como AdventOfCode, a primeira coisa que faço é sempre criar uma imagem Jupyter para essa linguagem.
A 2ª edição de Think Python mudou o rumo da minha vida. Fiz uma disciplina de Java e odiei tanto que desisti de programar; alguns anos depois, trabalhando como engenheiro de redes, apareceu um problema que parecia dar para resolver com script, peguei Think Python e acabei me apaixonando por Python e pela própria programação.
Estou pensando em mudar o rumo da minha vida para algo mais voltado a comunidade/makers/ensino, e tenho uma ideia de trabalho freelance/pequeno negócio para dar aulas, mas preciso de materiais para um “currículo flexível”.
Enquanto trabalhei como desenvolvedor web profissional, nunca precisei de Python, então estou aprendendo agora. Já usei quase todas as linguagens voltadas para web, incluindo Perl e Ruby.
Python parece ser uma linguagem adequada para ensinar conceitos gerais, e acho que ter um livro para consultar ajudaria.
Naquela época, Java foi definido como a linguagem principal da equipe e, depois de ver as vantagens da tipagem estática, não consegui mais voltar.
Desde então, Python também evoluiu muito graças ao suporte opcional a tipos e às IDEs que conseguem aplicá-lo, mas hoje sou totalmente enviesado para linguagens de tipagem estática.
Para scripts utilitários, ainda gosto de Python, que é muito mais refinado do que usar só bash. Mas, se eu puder escolher uma linguagem para uma aplicação completa, prefiro Java/Scala etc. Rust também é excelente, mas a curva de aprendizado é íngreme demais para a maioria das pessoas comuns.
Nunca usei pessoalmente a tipagem opcional de Python com suporte de ferramentas como o PyCharm, então é possível que, com as ferramentas, a experiência tenha ficado parecida com a de uma linguagem de tipagem estática. Se alguém já usou o IntelliJ Community Edition com imposição de tipos em Python ativada, gostaria de ouvir a experiência.
Gosto de Think Python e o recomendei a muitos estudantes. Ele equilibra muito bem vários fatores com os quais um livro para novos programadores precisa se preocupar.
Allen Downey publicou vários outros livros com abordagem parecida: https://greenteapress.com/wp/
Acho que alguns vão um pouco longe demais na direção de reduzir o rigor, mas, no geral, os livros que examinei eram muito bons.
Uma vez dividi mesa com Allen em uma conferência e, quando contei com que frequência eu recomendava ou comprava os livros dele para outras pessoas, acho que ele pensou que eu estava me gabando.
Desculpem mudar um pouco de assunto, mas, supondo que a pessoa já tenha experiência prática e continue acumulando experiência no trabalho, existe algum material de qualidade parecida para desenvolvedores Python intermediários/avançados?
Sempre sinto que há grandes partes da linguagem ou da biblioteca padrão que eu não conheço.
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
Leio o documento What’s New sempre que sai uma nova versão.
Fora isso, gosto de ler o código-fonte da biblioteca padrão e de pacotes populares de terceiros. Esse conselho, em geral, se aplica não só a Python, mas também a quando você aprende ou reaprende uma nova linguagem.
E, muitas vezes, só de ler as implementações anuais do Advent of Code do Norvig, obtenho insights sobre como escrever código Python elegante e conciso.
O autor publica em seu blog os projetos mais recentes em Python, principalmente trabalhos de análise bayesiana de dados, em https://www.allendowney.com/blog/, e tenho achado bem interessante
Que livros existem para programação intermediária a avançada em Python? Já conheço Python e programação em geral, mas quero desenvolver mais minha habilidade em Python
Por enquanto só conheço o Fluent Python, que estou lendo, e o CPython Internals
Por exemplo, Effective Pandas 2 mostra padrões comuns para lidar com dados tabulares. No processo, usa comprehensions, lambdas, unpacking etc., e também mostra como refatorar com pytest e usar visualizações para entender os dados
Aliás, eu sou o autor
Fluent Pythoné suficiente. O restante dos recursos da linguagem você entende lendo o manual oficial de referênciaEm https://www.redblobgames.com/ também há muitos textos muito perspicazes
É um livro pouco conhecido, mas explora vários estilos de programação resolvendo o mesmo problema sob diferentes restrições
Depois de certo nível de proficiência, isto é, acima do nível básico de um profissional, o que resta é apenas ler e escrever código
Posts relacionados:
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - abril de 2023, 30 comentários
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - agosto de 2010, 9 comentários
Que sorte. Acabei de começar uma mentoria em Python, e sou grande fã do Downey. Ele é um educador e homem renascentista realmente excepcional
Com certeza vou acompanhar este livro
Quando aprendi programação pela primeira vez, este livro também mudou minha vida. Não tanto por uma transição de carreira, mas pela forma como o livro foi escrito e por alguns conceitos que, para mim, um iniciante completo, de repente passaram a fazer sentido
Agora, vendo a 3ª edição 10 a 15 anos depois, bate uma grande nostalgia, e eu não poderia recomendar este livro o suficiente
Eu gostava especialmente deste trecho da edição anterior de Think Java: https://files.catbox.moe/v1vgdc.jpg
Outra parte interessante é esta: