Capítulo 1. Una sesión de preguntas y respuestas sobre Python

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Si has comprado este libro, es posible que ya sepas qué es Python y por qué es una herramienta importante que debes aprender. Si no lo sabes, probablemente no te convencerás de Python hasta que hayas aprendido el lenguaje leyendo el resto de este libro y hayas realizado uno o dos proyectos. Pero antes de entrar en detalles, este primer capítulo del libro presentará brevemente algunas de las principales razones de la popularidad de Python. Para empezar a esculpir una definición de Python, este capítulo adopta la forma de una sesión de preguntas y respuestas, en la que se plantean algunas de las preguntas más habituales de los principiantes.

¿Por qué la gente utiliza Python?

Dado que hoy en día hay muchos lenguajes de programación disponibles, ésta es la primera pregunta habitual de los recién llegados. Dado que en la actualidad hay aproximadamente 1 millón de usuarios de Python, realmente no hay forma de responder a esta pregunta con total exactitud; la elección de las herramientas de desarrollo se basa a veces en limitaciones únicas o en preferencias personales.

Pero después de enseñar Python a unos 260 grupos y a más de 4.000 estudiantes durante los últimos 16 años, he visto surgir algunos temas comunes. Los principales factores citados por los usuarios de Python parecen ser éstos:

Calidad del software

Para muchos, el enfoque de Python en la legibilidad, la coherencia y la calidad del software en general lo distingue de otras herramientas del mundo del scripting. El código Python está diseñado para ser legible y, por tanto, reutilizable y mantenible, mucho más que los lenguajes de programación tradicionales. La uniformidad del código Python hace que sea fácil de entender, aunque no lo hayas escrito tú. Además, Python es muy compatible con mecanismos de reutilización de software más avanzados, como la programación orientada a objetos (OO) y funcional.

Productividad de los desarrolladores

Python aumenta la productividad de los desarrolladores muchas veces más que los lenguajes compilados o tipados estáticamente, como C, C++ y Java. El código Python suele tener entre un tercio y un quintodel tamaño de un código C++ o Java equivalente. Eso significa que hay menos que escribir, menos que depurar y menos que mantener a posteriori. Los programas Python también se ejecutan inmediatamente, sin los largos pasos de compilación y enlace que requieren otras herramientas, lo que aumenta aún más la velocidad del programador.

Portabilidad del programa

La mayoría de los programas Python se ejecutan sin cambios en las principales plataformas informáticas. Portar código Python entre Linux y Windows, por ejemplo, suele ser sólo cuestión de copiar el código de un script entre máquinas. Además, Python ofrece múltiples opciones para codificar interfaces gráficas de usuario portátiles, programas de acceso a bases de datos, sistemas basados en la web y mucho más. Incluso las interfaces del sistema operativo, incluidos el lanzamiento de programas y el procesamiento de directorios, son tan portables en Python como es posible.

Bibliotecas de apoyo

Python viene con una gran colección de funcionalidades preconstruidas y portátiles, conocidas como la biblioteca estándar. Esta biblioteca admite toda una serie de tareas de programación a nivel de aplicación, desde la concordancia de patrones de texto hasta la creación de scripts de red. Además, Python puede ampliarse tanto con bibliotecas propias como con una amplia colección de software de apoyo a aplicaciones de terceros. El dominio de terceros de Python ofrece herramientas para la construcción de sitios web, programación numérica, acceso a puertos serie, desarrollo de juegos y mucho más (consulta más adelante una muestra). La extensión NumPy, por ejemplo, ha sido descrita como un equivalente gratuito y más potente del sistema de programación numérica Matlab.

Integración de componentes

Los scripts de Python pueden comunicarse fácilmente con otras partes de una aplicación, utilizando diversos mecanismos de integración. Estas integraciones permiten utilizar Python como herramienta de personalización y extensión de productos. Hoy en día, el código Python puede invocar bibliotecas C y C++, puede ser llamado desde programas C y C++, puede integrarse con componentes Java y .NET, puede comunicarse a través de marcos como COM y Silverlight, puede interactuar con dispositivos a través de puertos serie, y puede interactuar a través de redes con interfaces como SOAP, XML-RPC y CORBA. No es una herramienta independiente.

Disfruta

Gracias a la facilidad de uso de Python y a su conjunto de herramientas integradas, puede hacer que el acto de programar sea más un placer que una tarea. Aunque éste pueda ser un beneficio intangible, su efecto sobre la productividad es una baza importante.

De estos factores, los dos primeros (calidad y productividad) son probablemente las ventajas más convincentes para la mayoría de los usuarios de Python, y merecen una descripción más completa.

Calidad del software

Por diseño, Python implementa una sintaxis deliberadamente sencilla y legible y un modelo de programación muy coherente. Como atestigua un eslogan de una pasada conferencia sobre Python, el resultado neto es que Python parece "adaptarse a tu cerebro", es decir, las características del lenguaje interactúan de forma coherente y limitada y se derivan naturalmente de un pequeño conjunto de conceptos básicos, lo que hace que el lenguaje sea más fácil de aprender, comprender y recordar. En la práctica, los programadores de Python no necesitan consultar constantemente manuales cuando leen o escriben código; es un sistema diseñado de forma coherente que muchos consideran que produce un código sorprendentemente uniforme.

Por filosofía, Python adopta un enfoque algo minimalista. Esto significa que, aunque suele haber múltiples formas de realizar una tarea de codificación, normalmente sólo hay una forma obvia, unas pocas alternativas menos obvias y un pequeño conjunto de interacciones coherentes en todo el lenguaje. Además, Python no toma decisiones arbitrarias por ti; cuando las interacciones son ambiguas, se prefiere la intervención explícita a la "magia". En la forma de pensar de Python, lo explícito es mejor que lo implícito, y lo simple es mejor que lo complejo .1

Más allá de estos temas de diseño, Python incluye herramientas como los módulos y la programación orientada a objetos que fomentan de forma natural la reutilización del código. Y como Python se centra en la calidad, naturalmente también lo hacen los programadores de Python.

Productividad de los desarrolladores

Durante el gran auge de Internet de mediados y finales de los 90, era difícil encontrar suficientes programadores para llevar a cabo proyectos de software; se pedía a los desarrolladores que pusieran en marcha sistemas tan rápido como evolucionaba Internet. En épocas posteriores de despidos y recesión económica, el panorama cambió. A menudo se pedía a las plantillas de programadores que realizaran las mismas tareas con aún menos personal.

En ambos casos, Python ha brillado como herramienta que permite a los programadores hacer más con menos esfuerzo. Está optimizado deliberadamente para acelerar el desarrollo: susintaxis sencilla, la tipificación dinámica, la ausencia de pasos de compilación y el conjunto de herramientas integradas permiten a los programadores desarrollar programas en una fracción del tiempo necesario al utilizar otras herramientas. El efecto neto es que Python suele aumentar la productividad de los programadores muchas veces por encima de los niveles soportados por los lenguajes tradicionales. Eso es una buena noticia tanto en tiempos de auge como de crisis, y en todos los lugares a los que se dirige la industria del software en entre medias.

¿Es Python un "lenguaje de scripting"?

Python es un lenguaje de programación de propósito general que a menudo se aplica en funciones de scripting. Se suele definir como un lenguaje de programación orientado a objetos, unadefinición que combina el soporte de la programación orientada a objetos con una orientación general hacia las funciones de programación. Si me presionaran para que dijera una sola frase, diría que Python es probablemente más conocido como un lenguaje de programación de propósito general que mezcla paradigmas procedimentales, funcionales y orientados a objetos, unaafirmación que capta la riqueza y el alcance del Python actual.

Aún así, el término "scripting" parece haberse pegado a Python como pegamento, quizá como contraste con el mayor esfuerzo de programación que requieren otras herramientas. Por ejemplo, la gente suele utilizar la palabra "script" en lugar de "programa" para describir un archivo de código Python. Siguiendo esta tradición, este libro utiliza los términos "script" y "programa" indistintamente, con una ligera preferencia por "script" para describir un archivo de nivel superior más sencillo y por "programa" para referirse a una aplicación multifilares más sofisticada.

Sin embargo, como el término "lenguaje de scripting" tiene tantos significados diferentes para distintos observadores, algunos preferirían que no se aplicara a Python en absoluto. De hecho, la gente tiende a hacer tres asociaciones muy diferentes, algunas más útiles que otras, cuando oye etiquetar a Python como tal:

Herramientas de concha

A veces cuando la gente oye describir Python como un lenguaje de scripting, piensa que significa que Python es una herramienta para codificar scripts orientados al sistema operativo. Estos programas suelen lanzarse desde líneas de comandos de consola y realizan tareas como procesar archivos de texto y lanzar otros programas.

Los programas Python pueden desempeñar y desempeñan esas funciones, pero éste es sólo uno de las docenas de ámbitos de aplicación comunes de Python. No es sólo un lenguaje de shell-script mejor.

Lengua de control

Para otros, scripting se refiere a una capa "pegamento" utilizada para controlar y dirigir (es decir, guionizar) otros componentes de la aplicación. De hecho, los programas Python se implementan a menudo en el contexto de aplicaciones más amplias. Por ejemplo, para probar dispositivos de hardware, los programas Python pueden llamar a componentes que dan acceso de bajo nivel a un dispositivo. Del mismo modo, los programas pueden ejecutar fragmentos de código Python en puntos estratégicos para apoyar la personalización del producto por parte del usuario final sin necesidad de enviar y recompilar todo el código fuente del sistema.

La simplicidad de Python lo convierte en una herramienta de control naturalmente flexible. Técnicamente, sin embargo, esto también es sólo una función común de Python; muchos programadores de Python (quizás la mayoría) codifican scripts independientes sin utilizar ni conocer nunca ningún componente integrado. No es sólo un lenguaje de control.

Facilidad de uso

Probablemente, la mejor forma de pensar en el término "lenguaje de scripting" es que se refiere a un lenguaje sencillo utilizado para codificar rápidamente tareas. Esto es especialmente cierto cuando el término se aplica a Python, que permite un desarrollo de programas mucho más rápido que los lenguajes compilados como C++. Su ciclo de desarrollo rápido fomenta un modo de programación exploratorio e incremental que hay que experimentar para apreciarlo.

Pero no te engañes: Python no es sólo para tareas sencillas, sino que las simplifica gracias a su facilidad de uso y flexibilidad. Python tiene un conjunto de funciones sencillas, pero permite que los programas aumenten su sofisticación según sea necesario. Por eso se suele utilizar para tareas tácticas rápidas y para el desarrollo estratégico a largo plazo.

Entonces, ¿es Python un lenguaje de scripting o no? Depende de a quién preguntes. En general, el término "scripting" probablemente se utilice mejor para describir el modo de desarrollo rápido y flexible que admite Python, que un ámbito de aplicación concreto.

Vale, pero ¿cuál es el inconveniente?

Después de utilizarlo durante 21 años, escribir sobre él en durante 18 y enseñarlo durante 16, he descubierto que el único inconveniente universal significativo de Python es que, tal y como está implementado actualmente, su velocidad de ejecución no siempre es tan rápida como la de los lenguajes de bajo nivel totalmente compilados, como C y C++. Aunque es relativamente raro hoy en día, para algunas tareas puede que aún necesites ocasionalmente "acercarte al hierro" utilizando lenguajes de nivel inferior como éstos, que están más directamente mapeados con la arquitectura de hardware subyacente.

Hablaremos en detalle de los conceptos de implementación más adelante en este libro. En resumen, las implementaciones estándar de Python actuales compilan (es decir, traducen) las sentencias del código fuente a un formato intermedio conocido como código byte y, a continuación, interpretan el código byte. El código byte proporciona portabilidad, ya que es un formato independiente de la plataforma. Sin embargo, debido a que Python no se compila normalmente hasta el código máquina binario (por ejemplo, instrucciones para un chip Intel), algunos programas se ejecutarán más lentamente en Python que en un lenguaje totalmente compilado como C. El sistema PyPy, del que se hablará en el próximo capítulo, puede conseguir un aumento de velocidad de 10X a 100X en algunos códigos compilando más a medida que se ejecuta tu programa, pero se trata de una implementación alternativa independiente.

Que alguna vez te importe la diferencia de velocidad de ejecución depende del tipo de programas que escribas. Python ha sido optimizado en numerosas ocasiones, y el código Python se ejecuta suficientemente rápido por sí mismo en la mayoría de los dominios de aplicación. Además, siempre que hagas algo "real" en un script de Python, como procesar un archivo o construir una interfaz gráfica de usuario (GUI), tu programa se ejecutará realmente a velocidad C, ya que esas tareas se envían inmediatamente a código C compilado dentro del intérprete de Python. Más fundamentalmente, la ganancia de velocidad de desarrollo de Python es a menudo mucho más importante que cualquier pérdida de velocidad de ejecución, especialmente teniendo en cuenta las velocidades de los ordenadores modernos.

Sin embargo, incluso con las velocidades actuales de la CPU, sigue habiendo algunos dominios que requieren velocidades de ejecución óptimas. La programación numérica y la animación, por ejemplo, a menudo necesitan que al menos sus componentes centrales de cálculo numérico se ejecuten a velocidad C (o superior). Si trabajas en un ámbito de este tipo, puedes seguir utilizando Python: basta con dividir las partes de la aplicación que requieren una velocidad óptima en extensiones compiladas, y vincularlas a tu sistema para utilizarlas en scripts de Python.

No hablaremos mucho de extensiones en este texto, pero en realidad se trata de un ejemplo de el papel de Python como lenguaje de control del que hemos hablado antes. Un ejemplo excelente de esta estrategia de doble lenguaje es la extensión de programación numérica NumPy para Python; al combinar bibliotecas de extensiones numéricas compiladas y optimizadas con el lenguaje Python, NumPy convierte a Python en una herramienta de programación numérica que es a la vez eficiente y fácil de usar. Cuando es necesario, estas extensiones proporcionan una potente herramienta de optimización.

¿Quién utiliza Python hoy en día?

En el momento de escribir estas líneas, la mejor estimación que se puede hacer del tamaño de la base de usuarios de Python es que hay aproximadamente 1 millón de usuarios de Python en todo el mundo (más o menos unos pocos). Como Python es de código abierto, es difícil hacer un recuento más exacto: no hay registros de licencias que contabilizar. Además, Python se incluye automáticamente en las distribuciones de Linux, los ordenadores Macintosh y una amplia gama de productos y hardware, lo que enturbia aún más el panorama de la base de usuarios.

En general, sin embargo, Python goza de una gran base de usuarios y de una comunidad de desarrolladores muy activa. En general, se considera que está entre los 5 o 10 lenguajes de programación más utilizados actualmente en el mundo (su clasificación exacta varía según la fuente y la fecha). Dado que Python existe desde hace más de dos décadas y ha sido ampliamente utilizado, también es muy estable y robusto.

Además de ser aprovechado por usuarios individuales, Python también está siendo aplicado en productos reales generadores de ingresos por empresas reales. Por ejemplo, entre la base de usuarios de Python generalmente conocida:

  • Google utiliza ampliamente Python en sus sistemas de búsqueda web.

  • El popular servicio para compartir vídeos YouTube está escrito en gran parte en Python.

  • El servicio de almacenamiento Dropbox codifica tanto su software de servidor como el de cliente de escritorio principalmente en Python.

  • El ordenador de placa única Raspberry Pi promueve Python como lenguaje educativo.

  • EVE Online, un juego multijugador masivo online (MMOG) de CCP Games, utiliza ampliamente Python.

  • El extendido sistema de intercambio de archivos entre iguales BitTorrent comenzó su vida como un programa Python.

  • Industrial Light & Magic, Pixar y otros utilizan Python en la producción de películas de animación.

  • ESRI utiliza Python como herramienta de personalización para el usuario final de sus populares productos cartográficos SIG.

  • El marco de desarrollo web App Engine de Google utiliza Python como lenguaje de aplicación.

  • El producto servidor de correo electrónico IronPort utiliza más de 1 millón de líneas de código Python para hacer su trabajo.

  • Maya, un potente sistema integrado de modelado y animación 3D, proporciona una API de scripting en Python.

  • La NSA utiliza Python para criptografía y análisis de inteligencia.

  • iRobot utiliza Python para desarrollar dispositivos robóticos comerciales y militares.

  • Los eventos personalizables del juego Civilization IV están escritos completamente en Python.

  • El proyecto One Laptop Per Child(OLPC) construyó su interfaz de usuario y su modelo de actividad en Python.

  • TantoNetflix como Yelp han documentado el papel de Python en sus infraestructuras de software.

  • Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm e IBM utilizan Python para las pruebas de hardware.

  • JPMorgan Chase, UBS, Getco y Citadel aplican Python a la previsión de los mercados financieros.

  • La NASA, Los Álamos, Fermilab, JPL y otros utilizan Python para tareas de programación científica.

Y así sucesivamente -aunque esta lista es representativa, un recuento completo está más allá del alcance de este libro, y está casi garantizado que cambie con el tiempo. Para una muestra actualizada de usuarios, aplicaciones y software adicionales de Python, prueba las siguientes páginas actualmente en el sitio de Python y Wikipedia, así como una búsqueda en tu navegador web favorito:

Probablemente, el único punto en común entre las empresas que utilizan Python hoy en día es que Python se utiliza por todo el mapa, en cuanto a dominios de aplicación. Su naturaleza de propósito general lo hace aplicable a casi todos los campos, no sólo a uno. De hecho, se puede afirmar que prácticamente todas las organizaciones importantes que escriben software utilizan Python, ya sea para tareas tácticas a corto plazo, como pruebas y administración, o para el desarrollo estratégico de productos a largo plazo. Python ha demostrado que funciona bien en ambos modos .

¿Qué puedo hacer con Python?

Además de que es un lenguaje de programación bien diseñado, Python es útil para realizar tareas del mundo real, el tipo de cosas que los desarrolladores hacen día tras día. Se utiliza habitualmente en diversos ámbitos, como herramienta para crear scripts de otros componentes e implementar programas independientes. De hecho, como lenguaje de propósito general, las funciones de Python son prácticamente ilimitadas: puedes utilizarlo para todo, desde el desarrollo de sitios web y juegos hasta la robótica y el control de naves espaciales.

Sin embargo, las funciones más comunes de Python en la actualidad parecen corresponder a unas pocas categorías generales. Las siguientes secciones describen algunas de las aplicaciones más comunes de Python en la actualidad, así como las herramientas de utilizadas en cada ámbito. No podremos explorar en profundidad las herramientas mencionadas aquí; si te interesa alguno de estos temas, consulta el sitio web de Python u otros recursos para obtener más detalles.

Programación de sistemas

Las interfaces integradas en Python para los servicios del sistema operativo lo hacen ideal para escribir herramientas y utilidades de administración del sistema portátiles y fáciles de mantener (a veces se llama herramientas shell). Los programas Python pueden buscar archivos y árboles de directorios, lanzar otros programas, realizar procesamiento paralelo con procesos e hilos, etc.

La biblioteca estándar de Python incluye enlaces POSIX y soporte para todas las herramientas habituales del sistema operativo: variables de entorno, archivos, sockets, tuberías, procesos, hilos múltiples, concordancia de patrones de expresiones regulares, argumentos de línea de comandos, interfaces de flujo estándar, lanzadores de comandos de shell, expansión de nombres de archivo, utilidades de archivos zip, analizadores XML y JSON, gestores de archivos CSV y mucho más. Además, la mayor parte de las interfaces de sistema de Python están diseñadas para ser portátiles; por ejemplo, un script que copia árboles de directorios suele ejecutarse sin cambios en las principales plataformas Python. La implementación Stackless Python, descrita en el Capítulo 2 y utilizada por EVE Online, también ofrece soluciones avanzadas a los requisitos del multiprocesamiento.

GUIs

La simplicidad de Python y la rapidez de también lo convierten en una buena opción para la programación de interfaces gráficas de usuario en el escritorio. Python viene con una interfaz estándar orientada a objetos para la API de interfaz gráfica de usuario Tk llamada tkinter(Tkinter en 2.X) que permite a los programas Python implementar interfaces gráficas de usuario portátiles con un aspecto nativo. Las interfaces gráficas de Python/tkinter se ejecutan sin cambios en Microsoft Windows, X Windows (en Unix y Linux) y Mac OS (tanto Classic como OS X). Un paquete de extensión gratuito de , PMW, añade widgets avanzados al conjunto de herramientas tkinter. Además, la API GUI wxPython, basada en una biblioteca C++, ofrece un conjunto de herramientas alternativo para construir GUI portátiles en Python.

Los kits de herramientas de nivel superior, como Dabo, se construyen sobre APIs base como wxPython y tkinter. Con la biblioteca adecuada, también puedes utilizar el soporte GUI de otros kits de herramientas en Python, como Qt con PyQt, GTK con PyGTK, MFC con PyWin32, .NETcon IronPython, y Swing con Jython (la versión Java de Python, descrita en el Capítulo 2) o JPype. Para las aplicaciones que se ejecutan en navegadores web o tienen requisitos de interfaz sencillos, tanto los marcos web de Jython y Python como los scripts CGI del lado del servidor, descritos en la siguiente sección, proporcionan opciones adicionales de interfaz de usuario.

Programación en Internet

Python viene con módulos estándar de Internet que permiten a los programas Python realizar una amplia variedad de tareas de red, en modo cliente y servidor. Los scripts pueden comunicarse a través de sockets; extraer información de formularios enviada a scripts CGI del lado del servidor; transferir archivos por FTP; analizar y generar documentos XML y JSON; enviar, recibir, componer y analizar correo electrónico; obtener páginas web por URL; analizar el HTML de las páginas web obtenidas; comunicarse a través de XML-RPC, SOAP y Telnet; y mucho más. Las bibliotecas de Python hacen que estas tareas sean extraordinariamente sencillas.

Además, en la Web hay disponible una gran colección de herramientas de terceros para programar en Internet con Python. Por ejemplo, el sistema HTMLGen genera archivos HTML a partir de descripciones basadas en clases Python, el paquete mod_python ejecuta Python eficientemente dentro del servidor web Apache y admite plantillas del lado del servidor con sus Páginas de Servidor Python, y el sistema Jython proporciona una integración Python/Java sin fisuras y admite la codificación de applets del lado del servidor que se ejecutan en los clientes.

Además, los paquetes de marcos de desarrollo web completos para Python, como Django, TurboGears, web2py, Pylons, Zope y WebWare, permiten construir rápidamente sitios web completos y de calidad de producción con Python. Muchos de ellos incluyen funciones como mapeadores objeto-relacionales, una arquitectura Modelo/Vista/Controlador, scripts y plantillas del lado del servidor, y compatibilidad con AJAX, para proporcionar soluciones de desarrollo web completas y de nivel empresarial.

Más recientemente, Python se ha expandido a las aplicaciones ricas de Internet (RIA) , con herramientas como Silverlight en IronPython, y pyjs (también conocido como pyjamas) y su compilador de Python a JavaScript, marco AJAX y conjunto de widgets. Python también se ha adentrado en la computación en nube, con App Engine, y otras que se describen más adelante en la sección de bases de datos. Donde la Web lleva la delantera, Python la sigue rápidamente.

Integración de componentes

Ya hemos hablado de la función de integración de componentes de al describir Python como lenguaje de control. La capacidad de Python para ampliarse e integrarse en sistemas C y C++ lo hace útil como lenguaje flexible para programar el comportamiento de otros sistemas y componentes. Por ejemplo, integrar una biblioteca C en Python permite a Python probar y lanzar los componentes de la biblioteca, e incrustar Python en un producto permite codificar personalizaciones in situ sin tener que recompilar todo el producto (o enviar su código fuente).

Herramientas como los generadores de código SWIG y SIP pueden automatizar gran parte del trabajo necesario para enlazar componentes compilados en Python para su uso en scripts, y el sistema Cython permite a los programadores mezclar código Python y C-like. Los marcos más amplios, como el soporte COM de Python en Windows, la implementación basada en Java de Jython y la implementación basada en .NET de IronPython proporcionan formas alternativas de programar componentes. En Windows, por ejemplo, los scripts de Python pueden utilizar marcos para programar Word y Excel, acceder a Silverlight y mucho más.

Programación de bases de datos

Para las demandas de bases de datos tradicionales , existen interfaces de Python para todos los sistemas de bases de datos relacionales de uso común -Sybase, Oracle, Informix, ODBC, MySQL, PostgreSQL, SQLite, etc.-. El mundo Python también ha definido una API de base de datos portátil para acceder a sistemas de bases de datos SQL desde scripts Python, que tiene el mismo aspecto en una gran variedad de sistemas de bases de datos subyacentes. Por ejemplo, como las interfaces de los proveedores implementan la API portátil, un script escrito para trabajar con el sistema libre MySQL funcionará prácticamente igual en otros sistemas (como Oracle); lo único que tienes que hacer generalmente es sustituir la interfaz subyacente del proveedor. El motor de base de datos SQLite incrustado en el proceso es una parte estándar del propio Python desde la versión 2.5, que da soporte tanto a la creación de prototipos como a las necesidades básicas de almacenamiento de programas.

En el departamento no-SQL, el módulo pickle estándar de Python proporciona un sencillo sistema de persistencia de objetos: permite a los programas guardar y restaurar fácilmente objetos Python completos en archivos y objetos similares a archivos. En la Web, también encontrarás sistemas de código abierto de terceros, llamados ZODB y Durus, que proporcionan sistemas completos de bases de datos orientadas a objetos para scripts de Python; otros, como SQLObject y SQLAlchemy, que implementan mapeadores objeto-relacionales (ORM) , que injertan el modelo de clases de Python en tablas relacionales; y PyMongo, una interfaz a MongoDB, una base de datos de documentos de alto rendimiento, sin SQL y de código abierto , de estilo JSON, que almacena datos en estructuras muy similares a las listas y diccionarios propios de Python, y cuyo texto puede analizarse y crearse con el módulo jsonde la biblioteca estándar propia de Python.

Otros sistemas ofrecen formas más especializadas de almacenar datos, como el almacén de datos del App Engine de Google, que modela los datos con clases de Python y proporciona una amplia escalabilidad, así como otras opciones emergentes de almacenamiento en la nube, como Azure, PiCloud, OpenStack y Stackato.

Prototipado rápido

Para los programas Python, los componentes de escritos en Python y en C tienen el mismo aspecto. Por ello, es posible crear prototipos de sistemas en Python inicialmente, y luego trasladar los componentes seleccionados a un lenguaje compilado como C o C++ para su entrega. A diferencia de algunas herramientas de creación de prototipos, Python no requiere una reescritura completa una vez que el prototipo se ha solidificado. Las partes del sistema que no requieren la eficacia de un lenguaje como C++ pueden seguir codificadas en Python para facilitar su mantenimiento y uso.

Programación numérica y científica

Python también se utiliza mucho en programación numérica, un campo que tradicionalmente no se habría considerado dentro del ámbito de los lenguajes de programación, pero que ha crecido hasta convertirse en uno de los casos de uso más convincentes de Python. Aquí destaca , la extensión de programación numérica de alto rendimiento NumPy para Python mencionada anteriormente, que incluye herramientas avanzadas como un objeto matriz, interfaces con bibliotecas matemáticas estándar y mucho más. Al integrar Python con rutinas numéricas codificadas en un lenguaje compilado para mayor velocidad, NumPy convierte a Python en una herramienta de programación numérica sofisticada pero fácil de usar, que a menudo puede sustituir al código existente escrito en lenguajes compilados tradicionales como FORTRAN o C++.

Las herramientas numéricas adicionales para Python admiten animación, visualización 3D, procesamiento paralelo, etc. Las populares extensiones SciPy y ScientificPython, por ejemplo, proporcionan bibliotecas adicionales de herramientas de programación científica y utilizan NumPy como componente central. La implementación PyPy de Python (tratada en el Capítulo 2) también ha ganado terreno en el ámbito numérico, en parte porque el código algorítmico pesado del tipo habitual en este ámbito puede ejecutarse mucho más rápido en PyPy, a menudo entre 10 y 100 veces más rápido.

Y mucho más: Juegos, Imágenes, Minería de Datos, Robots, Excel...

Python se aplica habitualmente en más dominios de los que se pueden abarcar aquí. Por ejemplo, encontrarás herramientas que te permiten utilizar Python para hacer:

  • Programación de juegos y multimedia con pygame, cgkit, pyglet, PySoy, Panda3D y otros

  • Comunicación por puerto serie en Windows, Linux y más con la extensión PySerial

  • Procesamiento de imágenes con PIL y su nueva bifurcación Pillow, PyOpenGL, Blender, Maya y más

  • Programación del control del robot con el conjunto de herramientas PyRo

  • Análisis del lenguaje natural con el paquete NLTK

  • Instrumentación en las placas Raspberry Pi y Arduino

  • Informática móvil con adaptaciones de Python a las plataformas Google Android y Apple iOS

  • Programación de funciones y macros de hojas de cálculo Excel con los complementos PyXLL o DataNitro

  • Procesamiento de etiquetas de contenido y metadatos de archivos multimedia con PyMedia, ID3, PIL/Pillow y más

  • Inteligencia artificial con la biblioteca de redes neuronales PyBrainy el conjunto de herramientas de aprendizaje automático Milk

  • Programación de sistemas expertos con PyCLIPS, Pyke, Pyrolog y pyDatalog

  • Monitoreo de red con zenoss, escrito y personalizado con Python

  • Diseño y modelado con scripts Python con PythonCAD, PythonOCC, FreeCAD y otros

  • Procesamiento y generación de documentos con ReportLab, Sphinx, Cheetah, PyPDF, etc.

  • Visualización de datos con Mayavi, matplotlib, VTK, VPython y más

  • Análisis sintáctico de XML con el paquete de bibliotecas xml, el módulo xmlrpcliby extensiones de terceros

  • Procesamiento de archivos JSON y CSV con los módulos json y csv

  • Minería de datos con el framework Orange, el paquete Pattern, Scrapy y código personalizado

Incluso puedes jugar al solitario con el programa PySolFC. Y, por supuesto, siempre puedes codificar scripts Python personalizados en ámbitos menos cargados de palabras de moda para realizar la administración diaria del sistema, procesar tu correo electrónico, gestionar tus bibliotecas de documentos y archivos multimedia, etc. Encontrarás enlaces al soporte en muchos campos en el sitio web de PyPI, y a través de búsquedas web (busca en Google o en http://www.python.org para encontrar enlaces).

Aunque de amplio uso práctico, muchos de estos dominios específicos son en gran medida sólo instancias del papel de integración de componentes de Python en acción de nuevo. Añadirlo como interfaz a bibliotecas de componentes escritas en un lenguaje compilado como C hace que Python sea útil para crear scripts en una amplia variedad de dominios. Como lenguaje de uso general que admite la integración, Python es ampliamente aplicable a .

¿Cómo se desarrolla y mantiene Python?

Como popular sistema de código abierto, Python goza de una amplia y activa comunidad de desarrollo que responde a los problemas y desarrolla mejoras con una rapidez que muchos desarrolladores de software comercial podrían considerar notable. Los desarrolladores de Python coordinan el trabajo en línea con un sistema de control de código fuente. Los cambios se desarrollan según un protocolo formal, que incluye escribir una PEP (Propuesta de Mejora de Python) u otro documento, y extensiones del sistema de pruebas de regresión de Python. De hecho, modificar Python hoy en día es más o menos tan complicado como cambiar un software comercial, algo muy distinto de los primeros días de Python, cuando bastaba con enviar un correo electrónico a su creador, pero algo positivo dada su gran base de usuarios actual.

La PSF (Python Software Foundation), un grupo formal sin ánimo de lucro, organiza conferencias y se ocupa de cuestiones de propiedad intelectual. Se celebran numerosas conferencias sobre Python en todo el mundo; la OSCON de O'Reilly y la PyCon de la PSF son las más importantes. La primera de ellas aborda múltiples proyectos de código abierto, y la segunda es un evento exclusivamente sobre Python que ha experimentado un fuerte crecimiento en los últimos años. Las PyCon de 2012 y 2013 alcanzaron los 2. 500 asistentes cada una; de hecho, la PyCon de 2013 tuvo que limitar su límite a este nivel después de que se agotaran las entradas por sorpresa en 2012 (y consiguió captar una amplia atención por motivos tanto técnicos como no técnicos que no voy a relatar aquí). En años anteriores, la asistencia a menudo se duplicó, pasando de 586 asistentes en 2007 a más de 1.000 en 2008, por ejemplo, lo que indica el crecimiento de Python en general, e impresiona a quienes recuerdan las primeras conferencias, en las que los asistentes podían reunirse en torno a una mesa de restaurante.

Ventajas y desventajas del código abierto

Dicho esto, es importante tener en cuenta que, aunque Python disfruta de una vigorosa comunidad de desarrollo, esto conlleva ventajas y desventajas inherentes. El software de código abierto también puede parecer caótico e incluso parecerse a veces a la anarquía, y no siempre se implementa con tanta fluidez como podrían dar a entender los párrafos anteriores. Algunos cambios pueden llegar a desafiar los protocolos oficiales y, como en todas las empresas humanas, pueden producirse errores a pesar de los controles del proceso (Python 3.2.0, por ejemplo, venía con una función de consola input estropeada en Windows).

Además, los proyectos de código abierto cambian los intereses comerciales por las preferencias personales de un conjunto actual de desarrolladores, que pueden o no coincidir con las tuyas: no eres rehén de una empresa, pero estás a merced de quienes tienen tiempo libre para cambiar el sistema. El efecto neto es que la evolución del software de código abierto suele estar impulsada por unos pocos, pero se impone a la mayoría.

En la práctica, sin embargo, estas compensaciones afectan mucho más a quienes se encuentran en el perímetro "sangrante" de las nuevas versiones que a quienes utilizan versiones establecidas del sistema, incluidas las versiones anteriores tanto en Python 3.X como en 2.X. Si seguías utilizando clases clásicas en Python 2.X, por ejemplo, eras en gran medida inmune a la explosión de funcionalidad de las clases y al cambio en las clases de nuevo estilo que se produjo a principios y mediados de la década de 2000. Aunque éstas pasaron a ser obligatorias en 3.X (junto con muchas otras cosas), muchos usuarios de 2.X siguen eludiendo alegremente la cuestión.

¿Cuáles son los puntos fuertes técnicos de Python?

Naturalmente, ésta es la pregunta de un desarrollador de . Si aún no tienes conocimientos de programación, el lenguaje de las siguientes secciones puede resultarte un poco desconcertante; no te preocupes, exploraremos todos estos términos con más detalle a medida que avancemos en este libro. Para los desarrolladores, sin embargo, he aquí una rápida introducción a algunas de las principales características técnicas de Python.

Es Orientado a Objetos y Funcional

Python es un lenguaje orientado a objetos, desde la base. Su modelo de clases admite nociones avanzadas como el polimorfismo, la sobrecarga de operadores y la herencia múltiple; sin embargo, en el contexto de la sintaxis y tipado sencillos de Python, la POO es extraordinariamente fácil de aplicar. De hecho, si no entiendes estos términos, verás que son mucho más fáciles de aprender con Python que con cualquier otro lenguaje de programación orientada a objetos.

Además de servir como un potente dispositivo de estructuración y reutilización de código, la naturaleza de POO de Python lo hace ideal como herramienta de scripting para otros lenguajes de sistemas orientados a objetos. Por ejemplo, con el código pegamento adecuado, los programas Python pueden subclasificar (especializar) clases implementadas en C++, Java y C#.

De igual importancia, la programación orientada a objetos es una opción en Python; puedes llegar lejos sin tener que convertirte en un gurú de los objetos de golpe. Al igual que C++, Python admite modos de programación tanto procedimentales como orientados a objetos. Sus herramientas orientadas a objetos pueden aplicarse siempre y cuando las limitaciones lo permitan. Esto es especialmente útil en los modos de desarrollo táctico, que excluyen las fases de diseño.

Además de sus paradigmas originales procedimental(basado en sentencias) y orientado a objetos (basado en clases), Python ha incorporado en los últimos años soporte para la programación funcional, unconjunto que en la mayoría de los casos incluye generadores, comprensiones, cierres, mapas, decoradores, lambdas de funciones anónimas y objetos de función de primera clase. Pueden servir tanto de complemento como de alternativa a sus herramientas de programación orientada a objetos.

Es gratis

El uso y la distribución de Python son completamente gratuitos. Al igual que ocurre con otros programas de código abierto, como Tcl, Perl, Linux y Apache, puedes obtener gratuitamente en Internet todo el código fuente del sistema Python, sin restricciones para copiarlo, incrustarlo en tus sistemas o enviarlo con tus productos. De hecho, puedes incluso vender el código fuente de Python, si te apetece.

Al contrario, la comunidad en línea de Python responde a las consultas de los usuarios con una rapidez que la mayoría de los servicios de ayuda de software comercial harían bien en intentar emular. Además, como Python viene con el código fuente completo, capacita a los desarrolladores, lo que lleva a la creación de un gran equipo de expertos en implementación. Aunque estudiar o cambiar la implementación de un lenguaje de programación no es la idea de diversión de todo el mundo, es reconfortante saber que puedes hacerlo si lo necesitas. No dependes de los caprichos de un proveedor comercial, porque la documentación definitiva -elcódigo fuente- estáa tu disposición como último recurso.

Como ya se ha mencionado, el desarrollo de Python corre a cargo de una comunidad que coordina en gran medida sus esfuerzos a través de Internet. Está formada por el creador original de Python -Guidovan Rossum, el ungido oficialmente Benevolent Dictator for Life(BDFL) de Python- más un elenco de apoyo de miles de personas. Los cambios en el lenguaje deben seguir un procedimiento formal de mejora y ser examinados tanto por otros desarrolladores como por el BDFL. Esto tiende a hacer que Python sea más conservador con los cambios que otros lenguajes y sistemas. Aunque la división Python 3.X/2.X rompió con esta tradición de forma sólida y deliberada, sigue siendo válida en general dentro de cada línea de Python.

Es portátil

La implementación estándar de Python está escrita en ANSI C portable, y se compila y ejecuta en prácticamente todas las plataformas importantes actualmente en uso. Por ejemplo, los programas Python se ejecutan hoy en día en todo tipo de plataformas, desde PDAs hasta superordenadores. Como lista parcial, Python está disponible en:

  • Sistemas Linux y Unix

  • Microsoft Windows (todas las versiones modernas)

  • Mac OS (tanto OS X como Classic)

  • BeOS, OS/2, VMS y QNX

  • Sistemas en tiempo real como VxWorks

  • Superordenadores Cray y mainframes IBM

  • PDAs con Palm OS, PocketPC y Linux

  • Teléfonos móviles con Symbian OS y Windows Mobile

  • Consolas de videojuegos e iPods

  • Tabletas y smartphones con Android de Google e iOS de Apple

  • Y más

Al igual que el propio intérprete del lenguaje, los módulos de la biblioteca estándar que acompañan a Python se implementan para que sean lo más portables posible entre plataformas. Además, los programas Python se compilan automáticamente en código byte portable, que se ejecuta igual en cualquier plataforma que tenga instalada una versión compatible de Python (más sobre esto en el próximo capítulo).

Esto significa que los programas Python que utilizan el núcleo del lenguaje y las bibliotecas estándar funcionan igual en Linux, Windows y la mayoría de los sistemas con un intérprete de Python. La mayoría de los ports de Python también contienen extensiones específicas de la plataforma (por ejemplo, soporte COM en Windows), pero el núcleo del lenguaje Python y las bibliotecas funcionan igual en todas partes. Como ya se ha mencionado, Python también incluye una interfaz para el conjunto de herramientas de interfaz gráfica de usuario Tk llamada tkinter (Tkinter en 2.X), que permite a los programas Python implementar interfaces gráficas de usuario con todas las funciones que se ejecutan en las principales plataformas de escritorio GUI sin cambios en el programa.

Es poderoso

Desde el punto de vista de sus características, Python es una especie de híbrido. Su conjunto de herramientas lo sitúa entre los lenguajes de programación tradicionales (como Tcl, Scheme y Perl) y los lenguajes de desarrollo de sistemas (como C, C++ y Java). Python ofrece toda la sencillez y facilidad de uso de un lenguaje de programación, junto con herramientas de ingeniería de software más avanzadas que suelen encontrarse en los lenguajes compilados. A diferencia de algunos lenguajes de programación, esta combinación hace que Python sea útil para proyectos de desarrollo a gran escala. Como adelanto, aquí tienes algunas de las principales cosas que encontrarás en la caja de herramientas de Python:

Tipificación dinámica

Python mantiene un registro de los tipos de objetos que utiliza tu programa cuando se ejecuta; no requiere complicadas declaraciones de tipo y tamaño en tu código. De hecho, como verás en el Capítulo 6, en Python no existen las declaraciones de tipos y variables. Como el código Python no restringe los tipos de datos, también suele ser aplicable automáticamente a toda una gama de objetos.

Gestión automática de la memoria

Python asigna automáticamente objetos y los reclama ("recolecta basura") cuando ya no se utilizan, y la mayoría pueden crecer y decrecer a demanda. Como aprenderás, Python controla los detalles de memoria de bajo nivel para que tú no tengas que hacerlo.

Apoyo a la programación a gran escala

Para construir sistemas más grandes, Python incluye herramientas como módulos, clases y excepciones. Estas herramientas te permiten organizar sistemas en componentes, utilizar la programación orientada a objetos para reutilizar y personalizar el código, y gestionar eventos y errores con elegancia. Las herramientas de programación funcional de Python, descritas anteriormente, proporcionan formas adicionales de alcanzar muchos de los mismos objetivos.

Tipos de objetos incorporados

Python proporciona estructuras de datos de uso común, como listas, diccionarios y cadenas, como partes intrínsecas del lenguaje; como verás, son flexibles y fáciles de usar. Por ejemplo, los objetos incorporados pueden crecer y encogerse a voluntad, pueden anidarse arbitrariamente para representar información compleja, y mucho más.

Herramientas incorporadas

Para procesar todos esos tipos de objetos, Python dispone de operaciones potentes y estándar, como la concatenación (unir colecciones), el troceado (extraer secciones), la ordenación, el mapeado y otras más.

Utilidades de la biblioteca

Para tareas más específicas, Python también viene con una gran colección de herramientas de biblioteca precodificadas que lo soportan todo, desde la concordancia de expresiones regulares hasta la creación de redes. Una vez que aprendas el lenguaje en sí, las herramientas de biblioteca de Python son donde se produce gran parte de la acción a nivel de aplicación.

Utilidades de terceros

Como Python es de código abierto, se anima a los desarrolladores a contribuir con herramientas precodificadas que soporten tareas más allá de las soportadas por sus built-ins; en la Web, encontrarás soporte gratuito para COM, imágenes, programación numérica, XML, acceso a bases de datos y mucho más.

A pesar de la gran cantidad de herramientas de Python, conserva una sintaxis y un diseño extraordinariamente sencillos. El resultado es una potente herramienta de programación con toda la facilidad de uso de un lenguaje de programación.

Se puede mezclar

Los programas Python pueden "pegarse" fácilmente a componentes escritos en otros lenguajes de diversas formas. Por ejemplo, la API C de Python permite a los programas C llamar y ser llamados por programas Python de forma flexible. Eso significa que puedes añadir funcionalidad al sistema Python según sea necesario, y utilizar programas Python dentro de otros entornos o sistemas.

Mezclar Python con bibliotecas codificadas en lenguajes como C o C++, por ejemplo, lo convierte en un lenguaje frontend fácil de usar y en una herramienta de personalización. Como ya se ha dicho, esto también hace que Python sea bueno para la creación rápida de prototipos: los sistemas pueden implementarse primero en Python, para aprovechar su velocidad de desarrollo, y luego pasarse a C para su entrega, pieza a pieza, según las exigencias de rendimiento.

Es relativamente fácil de usar

Comparada con alternativas como C++, Java y C#, la programación en Python parece asombrosamente sencilla para la mayoría de los observadores. Para ejecutar un programa Python, basta con escribirlo y ejecutarlo. No hay pasos intermedios de compilación y enlace, como en lenguajes como C o C++. Python ejecuta los programas inmediatamente, lo que permite una experiencia de programación interactiva y una rápida respuesta tras los cambios en el programa: en muchos casos, puedes ver el efecto de un cambio en el programa casi tan rápido como lo escribes.

Por supuesto, la rapidez del ciclo de desarrollo es sólo un aspecto de la facilidad de uso de Python. También proporciona una sintaxis deliberadamente sencilla y potentes herramientas incorporadas. De hecho, algunos han llegado a llamar a Python pseudocódigo ejecutable. Al eliminar gran parte de la complejidad de otras herramientas, los programas Python son más sencillos, pequeños y flexibles que los programas equivalentes en otros lenguajes populares.

Es relativamente fácil de aprender

Esto nos lleva al objetivo de este libro: especialmente si lo comparamos con otros lenguajes de programación ampliamente utilizados, el núcleo del lenguaje Python es extraordinariamente fácil de aprender. De hecho, si eres un programador experimentado, puedes empezar a programar programas Python a pequeña escala en cuestión de días, y es posible que puedas aprender algunas partes limitadas del lenguaje en cuestión de horas, aunque no deberías esperar convertirte en un experto tan rápido (¡a pesar de lo que hayas oído en los departamentos de marketing!).

Naturalmente, dominar cualquier tema tan sustancial como el Python actual no es trivial, y dedicaremos el resto de este libro a esta tarea. Pero la verdadera inversión necesaria para dominar Python merece la pena: al final, adquirirás conocimientos de programación aplicables a casi todos los ámbitos de aplicación informática. Además, la mayoría considera que la curva de aprendizaje de Python es mucho más suave que la de otras herramientas de programación.

Son buenas noticias para los desarrolladores profesionales que quieren aprender el lenguaje para utilizarlo en el trabajo, así como para los usuarios finales de sistemas que exponen una capa Python para su personalización o control. Hoy en día, muchos sistemas se basan en el hecho de que los usuarios finales pueden aprender suficiente Python para adaptar su código de personalización Python in situ, con poco o ningún apoyo. Además, Python ha engendrado un gran grupo de usuarios que programan por diversión en lugar de por su carrera, y puede que nunca necesiten conocimientos completos de desarrollo de software. Aunque Python tiene herramientas de programación avanzadas, sus fundamentos básicos de lenguaje seguirán pareciendo relativamente sencillos tanto a los principiantes como a los gurús.

Lleva el nombre de Monty Python

Vale, esto no es exactamente un punto fuerte técnico, pero parece ser un secreto sorprendentemente bien guardado en el mundo Python que deseo exponer por adelantado. A pesar de todos los reptiles que aparecen en los libros y los iconos de los Python, la verdad es que Python debe su nombre al grupo cómico británico Monty Python, creadoresde la serie cómica de la BBC de los años 70 Monty Python's Flying Circus y de un puñado de largometrajes posteriores, como Monty Python y el Santo Grial, que siguen siendo muy populares hoy en día. El creador original de Python era un fan de Monty Python, al igual que muchos desarrolladores de software (de hecho, parece haber una especie de simetría entre ambos campos...).

Este legado añade inevitablemente una cualidad humorística a los ejemplos de código Python. Por ejemplo, los tradicionales "foo" y "bar" para nombres genéricos de variables se convierten en "spam" y "huevos" en el mundo Python. Los ocasionales "Brian", "ni" y "arbusto" también deben su aparición a este homónimo. Incluso repercute en la comunidad Python en general: algunos actos de las conferencias Python se anuncian regularmente como "La Inquisición Española".

Todo esto es, por supuesto, muy divertido si estás familiarizado con los programas, pero no tanto si no es así. No es necesario que conozcas la obra de Monty Python para que tengan sentido los ejemplos que toman referencias de ella, incluidos muchos que verás en este libro, pero al menos ahora conoces su raíz . (Te lo he advertido.)

¿Cómo se compara Python con el lenguaje X?

Por último, para situarlo en el contexto de lo que quizá ya sepas, la gente a veces compara Python con lenguajes como Perl, Tcl y Java. Esta sección resume el consenso común en este sentido.

Quiero señalar por adelantado que no soy partidario de ganar menospreciando a la competencia: no funciona a largo plazo, y ése no es el objetivo aquí. Además, no se trata de un juego de suma cero: la mayoría de los programadores utilizarán muchos lenguajes a lo largo de su carrera. No obstante, las herramientas de programación presentan opciones y compensaciones que merecen consideración. Al fin y al cabo, si Python no ofreciera algo más que sus alternativas, nunca se habría utilizado.

Antes hemos hablado de las ventajas y desventajas del rendimiento, así que aquí nos centraremos en la funcionalidad. Aunque también es útil conocer y utilizar otros lenguajes, mucha gente encuentra que Python:

  • Es más potente que Tcl. El fuerte apoyo de Python a la "programación a lo grande" lo hace aplicable al desarrollo de sistemas más grandes, y su biblioteca de herramientas de aplicación es más amplia.

  • Es más legible que Perl. Python tiene una sintaxis clara y un diseño sencillo y coherente. Esto, a su vez, hace que Python sea más reutilizable y mantenible, y ayuda a reducir los errores del programa.

  • Es más sencillo y fácil de usar que Java y C#. Python es un lenguaje de scripting, pero tanto Java como C# heredan gran parte de la complejidad y la sintaxis de los lenguajes de sistemas OOP más grandes, como C++.

  • Es más sencillo y fácil de usar que C++. El código Python es más sencillo que el equivalente C++ y a menudo de un tercio a un quinto de su tamaño, aunque como lenguaje de scripting, Python a veces cumple funciones diferentes.

  • Es más simple y de más alto nivel que C. La separación de Python de la arquitectura de hardware subyacente hace que el código sea menos complejo, mejor estructurado y más accesible que C, el progenitor de C++.

  • Es más potente, de uso general y multiplataforma que Visual Basic. Python es un lenguaje más rico que se utiliza más ampliamente, y su naturaleza de código abierto significa que no está controlado por una sola empresa.

  • Es más legible y de uso más general que PHP. Python también se utiliza para construir sitios web, pero también se aplica a casi todos los demás ámbitos informáticos, desde la robótica hasta la animación de películas y los juegos.

  • Es más potente y polivalente que JavaScript. Python tiene un conjunto de herramientas más amplio, y no está tan estrechamente ligado al desarrollo web. También se utiliza para modelado científico, instrumentación y mucho más.

  • Es más legible y está mejor establecido que Ruby. La sintaxis de Python es menos recargada, sobre todo en código no trivial, y su POO es totalmente opcional para los usuarios y proyectos a los que no se aplique.

  • Es más maduro y tiene un enfoque más amplio que Lua. El mayor conjunto de características de Python y su soporte de bibliotecas más extenso le dan un alcance más amplio que Lua, un lenguaje "pegamento" incrustado como Tcl.

  • Es menos esotérico que Smalltalk, Lisp y Prolog. Python tiene el sabor dinámico de lenguajes como éstos, pero también tiene una sintaxis tradicional accesible tanto para desarrolladores como para usuarios finales de sistemas personalizables.

Especialmente para programas que hacen algo más que escanear archivos de texto, y que podrían tener que ser leídos en el futuro por otros (¡o por ti!), mucha gente encuentra que Python se ajusta mejor a lo que se necesita que cualquier otro lenguaje de programación o scripting disponible hoy en día. Además, a menos que tu aplicación requiera un rendimiento máximo, Python suele ser una alternativa viable a lenguajes de desarrollo de sistemas como C, C++ y Java: El código Python a menudo puede lograr los mismos objetivos, pero será mucho menos difícil de escribir, depurar y mantener.

Por supuesto, su autor ha sido un evangelista de Python con carné desde 1992, así que tómate estos comentarios como quieras (y el kilometraje de los defensores de otros lenguajes puede variar arbitrariamente). Sin embargo, reflejan la experiencia común de muchos desarrolladores que han dedicado tiempo a explorar lo que Python puede ofrecer a .

Resumen del capítulo

Y con esto concluye la parte de "bombo y platillo" de este libro. En este capítulo, hemos explorado algunas de las razones por las que la gente elige Python para sus tareas de programación. También hemos visto cómo se aplica y hemos examinado una muestra representativa de quién lo utiliza hoy en día. Sin embargo, mi objetivo es enseñar Python, no venderlo. La mejor forma de juzgar un lenguaje es verlo en acción, así que el resto de este libro se centra por completo en los detalles del lenguaje que hemos glosado aquí.

Los dos capítulos siguientes inician nuestra introducción técnica al lenguaje. En ellos, exploraremos formas de ejecutar programas Python, echaremos un vistazo al modelo de ejecución de código byte de Python e introduciremos los fundamentos de los archivos de módulos para guardar código. El objetivo será darte la información suficiente para ejecutar los ejemplos y ejercicios del resto del libro. En realidad, no empezarás a programar per se hasta el Capítulo 4, pero asegúrate de que dominas los detalles de inicio antes de seguir adelante.

Pon a prueba tus conocimientos: Cuestionario

En esta edición del libro , cerraremos cada capítulo con un rápido cuestionario abierto sobre el material presentado, para ayudarte a repasar los conceptos clave. Las respuestas a estos cuestionarios aparecen inmediatamente después de las preguntas, y te animamos a que las leas una vez que hayas resuelto las preguntas, ya que a veces proporcionan un contexto útil.

Además de estos cuestionarios de final de capítulo, encontrarás ejercicios de laboratorio al final de cada parte del libro, diseñados para ayudarte a empezar a codificar Python por tu cuenta. De momento, aquí tienes tu primer cuestionario. Buena suerte, y asegúrate de consultar el material de este capítulo cuando lo necesites.

  1. ¿Cuáles son las seis razones principales por las que la gente elige utilizar Python?

  2. Nombra cuatro empresas u organizaciones notables que utilicen Python en la actualidad.

  3. ¿Por qué no querrías utilizar Python en una aplicación?

  4. ¿Qué puedes hacer con Python?

  5. ¿Qué significa la declaración Python import this?

  6. ¿Por qué aparece "spam" en tantos ejemplos de Python en libros y en la Web?

  7. ¿Cuál es tu color favorito?

Pon a prueba tus conocimientos: Respuestas

¿Qué tal lo has hecho? Éstas son las respuestas que se me ocurrieron, aunque puede haber varias soluciones para algunas preguntas del cuestionario. De nuevo, aunque estés seguro de tu respuesta, te animo a que mires las mías para obtener un contexto adicional. Consulta el texto del capítulo para obtener más detalles si alguna de estas respuestas no tiene sentido para ti.

  1. Calidad del software, productividad del desarrollador, portabilidad del programa, bibliotecas de apoyo, integración de componentes y disfrute sencillo. De todos ellos, los temas de calidad y productividad parecen ser las principales razones por las que la gente elige utilizar Python.

  2. Google, Industrial Light & Magic, CCP Games, Jet Propulsion Labs, Maya, ESRI y muchos más. Casi todas las organizaciones que desarrollan software utilizan Python de alguna manera, ya sea para el desarrollo estratégico de productos a largo plazo o para tareas tácticas a corto plazo, como pruebas y administración de sistemas.

  3. El principal inconveniente de Python es el rendimiento: no se ejecuta tan rápido como lenguajes totalmente compilados como C y C++. Por otra parte, es lo suficientemente rápido para la mayoría de las aplicaciones, y el código Python típico se ejecuta de todos modos a una velocidad cercana a la de C porque invoca código C enlazado en el intérprete. Si la velocidad es un factor crítico, existen extensiones compiladas para las partes de una aplicación que requieren muchos números.

  4. Puedes utilizar Python para casi cualquier cosa que puedas hacer con un ordenador, desde el desarrollo de sitios web y juegos hasta la robótica y el control de naves espaciales.

  5. Esto se mencionó en una nota a pie de página: import this activa un huevo de Pascua dentro de Python que muestra algunas de las filosofías de diseño subyacentes al lenguaje. Aprenderás a ejecutar esta declaración en el próximo capítulo.

  6. "Spam" es una referencia de un famoso sketch de los Monty Python en el que la gente que intenta pedir comida en una cafetería es ahogada por un coro de vikingos que cantan sobre el spam. Ah, y también es un nombre de variable común en los scripts de Python...

  7. Azul. No, ¡amarillo! (Véase la respuesta anterior).

1 Para una visión más completa de la filosofía de Python, escribe el comando import this en cualquier indicador interactivo de Python (verás cómo en el Capítulo 3). Esto invoca un "huevo de Pascua" oculto en Python: una colección de principios de diseño subyacentes a Python que impregnan tanto el lenguaje como su comunidad de usuarios. Entre ellos, el acrónimo EIBTI es ahora la jerga de moda para la regla "lo explícito es mejor que lo implícito". Estos principios no son una religión, pero se acercan lo suficiente como para calificarlos de lema y credo de Python, que citaremos a menudo en este libro.

Get Aprender Python, 5ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.