Python Guide Documentation Publicación 0.0.1
Total Page:16
File Type:pdf, Size:1020Kb
Python Guide Documentation Publicación 0.0.1 Kenneth Reitz 15 de November de 2016 Índice general 1. Getting Started with Python 3 1.1. Eligiendo un Interprete..........................................3 1.2. Properly Installing Python........................................5 1.3. Installing Python on Mac OS X.....................................6 1.4. Installing Python on Windows......................................7 1.5. Installing Python on Linux........................................8 2. Writing Great Python Code 11 2.1. Structuring Your Project......................................... 11 2.2. Code Style................................................ 21 2.3. Reading Great Code........................................... 31 2.4. Documentation.............................................. 31 2.5. Testing Your Code............................................ 33 2.6. Logging.................................................. 37 2.7. Common Gotchas............................................ 40 2.8. Choosing a License............................................ 43 3. Scenario Guide for Python Applications 45 3.1. Network Applications.......................................... 45 3.2. Web Applications............................................ 46 3.3. HTML Scraping............................................. 52 3.4. Command-line Applications....................................... 54 3.5. GUI Applications............................................. 55 3.6. Databases................................................. 57 3.7. Networking................................................ 58 3.8. Systems Administration......................................... 59 3.9. Continuous Integration.......................................... 64 3.10. Speed................................................... 65 3.11. Scientific Applications.......................................... 68 3.12. Image Manipulation........................................... 70 3.13. Data Serialization............................................ 72 3.14. XML parsing............................................... 73 3.15. JSON................................................... 74 3.16. Cryptography............................................... 74 3.17. Interfacing with C/C++ Libraries.................................... 75 4. Shipping Great Python Code 79 4.1. Packaging Your Code.......................................... 79 I 4.2. Freezing Your Code........................................... 81 5. Python Development Environments 85 5.1. Your Development Environment..................................... 85 5.2. Virtual Environments........................................... 90 5.3. Further Configuration of Pip and Virtualenv............................... 93 6. Additional Notes 95 6.1. Introduction............................................... 95 6.2. The Community............................................. 96 6.3. Learning Python............................................. 98 6.4. Documentation.............................................. 102 6.5. News................................................... 103 6.6. Contribute................................................ 104 6.7. License.................................................. 105 6.8. The Guide Style Guide.......................................... 105 II Python Guide Documentation, Publicación 0.0.1 Saludos, Terrícola! Bienvenido a la Guía Hitchhiker para Python. Esto es una guía activa. Si deseas contribuir, crea una copia en GitHub! Esta guía hecha a mano existe para proveer para ambos: novatos y expertos desarrolladores de Python un manual de mejores prácticas para instalación, configuración y uso de Python diariamente. Esta guía es obstinada en la manera que casi todo, pero no del todo, es diferente a la documentación oficial de Python. No encontrarás una lista de cada framwork web disponible aquí. Más bien, encontrarás una lista concissa de opciones altamente recomendadas. Vamos a empezar! Pero primeroxs, vamos a asegurarnos que sabes donde estas. Índice general 1 Python Guide Documentation, Publicación 0.0.1 2 Índice general CAPÍTULO 1 Getting Started with Python New to Python? Let’s properly setup up your Python environment. 1.1 Eligiendo un Interprete 1.1.1 El estado de Python (2 vs 3) Cuando vamos a elegir un interprete de Python, una pregunta esta siempre presente: “Debo elegir Python 2 o Python 3”? La respuesta no esta tan obvia como uno podría pensar. La esencia básica de las cosas es la siguiente: 1. Python 2.7 ha sido un estandar por un largo tiempo. 2. Python 3 introduce mayores cambios al lenguaje, que muchos desarrolladores no están felices con eso. 3. Python 2.7 recibirá actualizaciones de seguridad necesarias hasta 2020 5. 4. Python 3 está continuamente evolucionando, como Python 2 lo hizo en años pasados. Así, puedes ver porque no es una desición fácil. 1.1.2 Recommendaciones Voy a ser franco: Usa Python 3 si... No te importa. Te encanta Python 3. Eres indiferente a 2 vs 3. No sabes cual utilizar Te gusta el cambio Usa Python 2 si... Te encanta Python 2 y estas triste por el futuro de Python 3. Los requisitos de estabilidad de tu software podrían mejorarse con un lenguaje y ejecución que nunca cambia. 5 https://www.python.org/dev/peps/pep-0373/#id2 3 Python Guide Documentation, Publicación 0.0.1 El software que dependes los usará. 1.1.3 Asi que.... 3? Si estas eligiendo un interprete de Python para usar, y no eres obstinado, entonces te recomiendo usar la versión más nueva de Python 3.x, ya que cada versión trae nuevos y mejorados módulos de la biblioteca estandar, correcciones de seguridad y errores. Progreso es progreso. Dado tal, sólo use Python 2 si tienes una fuerte razón para hacerlo, tal como una librería exclusiva de Python 2 que no tiene una adecuada alternativa en Python 3, o si (como yo) ama absolutmente y está inspirado en Python 2. Revisa Puedo usar Python 3? para ver si el software del que dependes bloqueará tu adopción de Python 3. Otras lecturas Es posible It is possible escribir código que funcionará en Python 2.6, 2.7, y Python 3. Estos rangos de trivial a difícil dependerá del tipo de software que estás escribiendo; si eres principiante hay cosas más importantes por las que preocuparse. 1.1.4 Implementaciones Cuando la gente habla de Python ellos a menudo no sólo se refieren al lenguaje sino a la implementación CPython. Python es actualmente una especificación para un lenguaje que puede ser implementado en diferentes maneras. CPython CPython es la referencia de la implmementación de Python, escrita en C. Este compila código Python a bytecode intermedio que luego es interpretado por la máquina virtual. CPython provee el nivel más alto de compatibilidad con paquetes Python y módulos de extensión C. Si estas escribiendo código abierto Python y deseas alcanzar una amplia audiencia posible, apuntar a CPython es lo mejor. Para usar paquetes que recaen en extensiones C para funcionar, CPython es tu única implementación como opción. Todas las versiones de Python son implementadas en C porque CPython es la implementación de referencia. PyPy PyPy es un interprete de Python implementado en un subgrupo restringido de tipo estático del lenguaje de Python llamado RPython. El interprete cuenta con un compilador just-in-time y soporta múltiples back-ends (C, CLI, JVM). PyPy apunta a la máxima compatibilidad con la referencia de implementación CPython mientras mejora su rendimien- to. Si estas buscando incrementar el rendimiento de tu código Python, vale la pena darle una oportunidad a PyPy. En un conjunto de puntos de referencia, es actualmente más de 5 veces más rápido que CPython. PyPy soporta Python 2.7. PyPy3 1, liberado como beta, apunta a Python 3. 1 http://pypy.org/compat.html 4 Capítulo 1. Getting Started with Python Python Guide Documentation, Publicación 0.0.1 Jython Jython es una implementación de Python que compila código Python a Java bytecode que es ejecutado por la JVM (Java Virtual Machine). Adicionalmente, esta habilitado para importar y usar cualquier clase de Java como un módulo de Python. Si necesitas interactuar con código Java o tienes otras razones para escribir código Python para la JVM, Jython es tu mejor opción. Jython actualmente soporta hasta Python 2.7. 2 IronPython IronPython es una implementación de Python para el framework .NET. Puede ser usada por ambas librerías Python y .NET framework, y también puede exponer código Pytohn para otros lenguajes en el framwork .NET. Python Tools para Visual Studio integra IronPython directamente en el ambiente de desarrollo Visual Stu- dio,convirtiéndolo en una elección ideal para desarrolladores Windows. IronPython soporta Python 2.7. 3 PythonNet Python for .NET es un paquete que provee una integración sin puntos rotos de una instalación de Python con una instalación de .NET Common Language Runtime (CLR). Es un enfoque inverso al tomado por IronPython (ver antes), lo que es es más complementario que competitivo. En conjunto con Mono, PythonNet permite de forma nativa instalaciones de Python en sistemas operativos no- Windows, tales como OS X y Linux, para operar con .NET framework. Puede correr con IronPython sin conflicto. PythonNet soporta desde Python 2.3 hasta Python 2.7. 4 Properly Install Python 1.2 Properly Installing Python There’s a good chance that you already have Python on your operating system. If so, you do not need to install or configure anything else to use Python. Having said that, I would strongly re- commend that you install the tools and libraries described in the guides below before you start building