Zen de Python

O Zen de Python (em inglês: Zen of Python) é uma coleção de 19 princípios orientadores, na forma de poema, com uma série de aforismos, para escrever programas de computador que influenciam o design da linguagem de programação Python.

O engenheiro de software Tim Peters escreveu esse conjunto de princípios e o publicou na lista de discussão de Python em 1999. A lista de Peters deixou em aberto o vigésimo princípio "para Guido preencher", referindo-se a Guido van Rossum, o autor original da linguagem Python. A vaga para o vigésimo princípio, todavia, não foi preenchida.

O Zen de Python de Peters foi incluído como entrada número 20 nas propostas oficiais de aprimoramento de Python (PEP), lançadas em domínio público. Ele também está incluído como um easter egg no interpretador Python, que pode ser exibido digitando:

>>> import this

Princípios

Os princípios que constam no Zen of Python são (originalmente em Inglês):

A versão em Português seria a seguinte:

Sendo "Pythonico"

Um dos princípios, "Deve haver uma - e de preferência apenas uma - maneira óbvia de fazer isso", pode ser referenciado como o jeito "Pythonico". A definição oficial de "Pythonico" é:

Uma ideia ou trecho de código que segue de perto os padrões mais comuns da linguagem Python, em vez de implementar código usando conceitos comuns a outras linguagens. Por exemplo, uma prática comum em Python é percorrer todos os elementos de um elemento iterável usando uma instrução for. Muitas outras linguagens não possuem esse tipo de construção, então pessoas não familiarizadas com Python às vezes usam um contador numérico em vez disso:

for i in range(len(food)):
    print(food[i])

Em contraste com o método mais limpo e "pythonico":

for piece in food:
    print(piece)

Códigos que são difíceis de entender ou que se leem como uma transcrição grosseira de outra linguagem de programação é chamado de não-pythonico.

Na prática

Desde o lançamento do Zen do Python, têm sido feit pesquisas sobre sua eficácia e uso prático entre programadores. Apesar da diferença de interpretação entre juniores e programadores Python experientes, entrevistas realizadas com 13 programadores Python de diferentes níveis de habilidade mostram que o Zen do Python "influencia positivamente o jeito como os desenvolvedores escrevem e falam sobre código". Os pesquisadores expandiram este estudo de caso para explorar o uso de expressões idiomáticas do Python em repositórios do GitHub e descobriram que o uso de "expressões pythonicas" aumentou ao longo do tempo. Escrever códigos em Python que estejam alinhados com o Zen do Python pode economizar memória e tempo de execução de programas Python. O desejo de escrever código "pythonico" ocasionou no desenvolvimento de ferramentas de refatoração para ajudar os desenvolvedores a alcançar esse objetivo.

Ver também

Referências

  1. ↑ «Code Style — The Hitchhiker's Guide to Python». docs.python-guide.org. Consultado em 8 de junho de 2020. Cópia arquivada em 4 de agosto de 2026
  2. ↑ Peters, Tim. «"The Python Way"». Fri Jun 4 01:15:13 EDT 1999. Consultado em 8 de junho de 2020. Cópia arquivada em 13 de novembro de 2025
  3. ↑ Cory Althoff (2017). The Self-Taught Programmer: The Definitive Guide to Programming Professionally. [S.l.]: ‎ Self-Taught Media. ISBN 0999685902
  4. ↑ «PEP 20 -- The Zen of Python». Python.org (em inglês). Consultado em 8 de junho de 2020. Cópia arquivada em 27 de fevereiro de 2022
  5. ↑ Alexandru, Carol V.; Merchante, José J.; Panichella, Sebastiano; Proksch, Sebastian; Gall, Harald C.; Robles (24 de outubro de 2018). «On the usage of pythonic idioms» (PDF). Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (PDF). Col: Onward! 2018. New York, NY, USA: Association for Computing Machinery. pp. 1–11. ISBN 978-1-4503-6031-9. OCLC 1362712424. doi:10.1145/3276954.3276960. Consultado em 19 de fevereiro de 2024. Arquivado do original em 24 de março de 2024
  6. ↑ «Glossary». Python Documentation (em inglês). Consultado em 7 de fevereiro de 2024. Cópia arquivada em 5 de agosto de 2026
  7. ↑ «Code Style – The Hitchhiker's Guide to Python». docs.python-guide.org. Consultado em 20 de janeiro de 2021. Arquivado do original em 27 de janeiro de 2021
  8. ↑ Alexandru, Carol V.; Merchante, José J.; Panichella, Sebastiano; Proksch, Sebastian; Gall, Harald C.; Robles (24 de outubro de 2018). «On the usage of pythonic idioms» (PDF). Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (PDF). Col: Onward! 2018. New York, NY, USA: Association for Computing Machinery. pp. 1–11. ISBN 978-1-4503-6031-9. OCLC 1362712424. doi:10.1145/3276954.3276960. Consultado em 19 de fevereiro de 2024. Arquivado do original em 24 de março de 2024
  9. ↑ Farooq, Aamir; Zaytsev, Vadim (22 de novembro de 2021). «There is more than one way to zen your Python». Proceedings of the 14th ACM SIGPLAN International Conference on Software Language Engineering. Col: SLE 2021. New York, NY, USA: Association for Computing Machinery. pp. 68–82. ISBN 978-1-4503-9111-5. doi:10.1145/3486608.3486909
  10. ↑ Leelaprute, Pattara; Chinthanet, Bodin; Wattanakriengkrai, Supatsara; Kula, Raula Gaikovina; Jaisri, Pongchai; Ishio (20 de outubro de 2022). «Does coding in Pythonic zen peak performance?: Preliminary experiments of nine Pythonic idioms at scale». Proceedings of the 30th IEEE/ACM International Conference on Program Comprehension. Col: ICPC '22. New York, NY, USA: Association for Computing Machinery. pp. 575–579. ISBN 978-1-4503-9298-3. doi:10.1145/3524610.3527879
  11. ↑ Zhang, Zejun; Xing, Zhenchang; Xia, Xin; Xu, Xiwei; Zhu, Liming (12 de julho de 2022), Making Python Code Idiomatic by Automatic Refactoring Non-Idiomatic Python Code with Pythonic Idioms, arXiv:2207.05613Acessível livremente
  12. ↑ Phan-udom, Purit; Wattanakul, Naruedon; Sakulniwat, Tattiya; Ragkhitwetsagul, Chaiyong; Sunetnanta, Thanwadee; Choetkiertikul, Morakot; Kula, Raula Gaikovina (5 de setembro de 2020), Teddy: Automatic Recommendation of Pythonic Idiom Usage For Pull-Based Software Projects, arXiv:2009.03302Acessível livremente