Preguntas frecuentes generales sobre Python

Información General

¿Qué es Python?

Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. It supports multiple programming paradigms beyond object-oriented programming, such as procedural and functional programming. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants including Linux and macOS, and on Windows.

Para saber más, comienza con Tutorial de Python. La Beginner’s Guide to Python vincula a otros recursos y tutoriales introductorios para aprender Python.

¿Que es la Python Software Foundation?

La Python Software Foundation es una organización independiente sin fines de lucro que posee los derechos sobre Python desde la versión 2.1 en adelante. La misión de la PSF es hacer avanzar la tecnología open source relacionada al lenguaje de programación Python y publicitar su uso. El sitio web de la PSF es https://www.python.org/psf/.

Las donaciones a la PSF están exentas de impuestos en Estados Unidos. Si usas Python y lo encuentras útil, por favor contribuye a través de la página de donaciones de la PSF.

¿Por qué motivos se creó Python?

Aquí hay un muy breve resumen sobre qué fue lo que comenzó todo, escrita por Guido van Rossum:

Tenía vasta experiencia implementando un lenguaje interpretado en el grupo ABC en CWI y trabajando con este grupo había aprendido mucho sobre diseño de lenguajes. Este es el origen de muchas características de Python, incluyendo el uso de sangría para el agrupamiento de sentencias y la inclusión de tipos de datos de muy alto nivel (aunque los detalles son todos diferentes en Python).

Tenía algunos resquemores sobre el lenguaje ABC pero también me gustaban muchas de sus características. Era imposible extenderlo (al lenguaje o sus implementaciones) para remediar mis quejas – de hecho, la ausencia de extensibilidad fue uno de los mayores problemas. Contaba con alguna experiencia usando Modula-2+ y conversé con los diseñadores de Modula-3 y leí su reporte. Modula-3 es el origen de la sintaxis y semántica que usé para las excepciones y otras características de Python.

Estaba trabajando en Grupo del sistema operativo distribuido Amoeba en CWI. Necesitábamos una mejor manera de hacer administración de sistemas que escribir programas en C o scripts de Bourne shell, ya que Amoeba tenía sus propia interfaz de llamadas a sistema que no era fácilmente accesible desde Bourne shell. Mi experiencia con el manejo de errores de Amoeba me hizo muy consciente de la importancia de las excepciones como una característica de los lenguaje de programación.

Se me ocurrió que un lenguaje de scripts con una sintaxis como ABC pero con acceso a las llamadas al sistema Amoeba satisfaría la necesidad. Me di cuenta de que sería una tontería escribir un lenguaje específico para Amoeba, así que decidí que necesitaba un lenguaje que fuera generalmente extensible.

Durante las vacaciones de Navidad de 1989 tenía mucho tiempo libre, así que decidí hacer un intento. Durante el año siguiente, mientras seguía trabajando principalmente en él durante mi propio tiempo, Python se utilizó en el proyecto Amoeba con un éxito creciente, y los comentarios de mis colegas me hicieron agregar muchas mejoras iniciales.

En febrero de 1991, justo después de un año de desarrollo, decidí publicarlo en USENET. El resto está en el archivo Misc/HISTORY.

¿Para qué es bueno Python?

Python es un lenguaje de programación de propósito general de alto nivel que se puede aplicar a muchas clases diferentes de problemas.

El lenguaje viene con una vasta biblioteca estándar que cubre áreas como el procesamiento de texto (expresiones regulares, unicode, cálculo de diferencias entre archivos), protocolos de Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, programación CGI), ingeniería de software (pruebas unitarias, logging, perfilamiento, análisis sintáctico y gramatical de código Python) e interfaces con el sistema operativo (llamadas a sistema, sistemas de archivo, sockets TCP/IP). Mira la tabla de contenidos en La Biblioteca Estándar de Python para tener una idea de qué está disponible. Una amplia variedad de extensiones de terceros también están disponibles. Consulta el Python Package Index para encontrar paquetes de tu interés.

¿Cómo funciona el esquema numérico de versiones de Python?

La versiones de Python están numeradas A.B.C o A.B. A es el numero de versión más importante – sólo es incrementado por cambios realmente grandes en el lenguaje. B es el número de versión secundario (o menor), incrementado ante cambios menos traumáticos. C es el nivel micro – se incrementa en cada lanzamiento de corrección de errores. Mira el PEP 6 para más información sobre los lanzamientos de corrección de errores.

No todos los lanzamientos son de corrección de errores. En el período previo a un lanzamiento importante, una serie de lanzamientos de desarrollo son realizados, denotados como alpha, beta o release candidate. Las versiones alphas son lanzamientos tempranos en los que las interfaces no están todavía finalizadas; no es inesperado que una interfaz cambie entre dos lanzamientos alpha. Las betas son más estables, preservando las interfaces existentes pero posiblemente agregando nuevos módulos. Los release candidates están congelados, sin hacer cambios excepto los necesarios para corregir bugs críticos.

Las versiones alpha, beta y release candidates tienen un sufijo adicional. El sufijo para la versión alpha es «aN» para algunos números N pequeños; el sufijo para beta es «bN» para algunos números N pequeños, y el sufijo para release candidates es «cN» para algunos números N pequeños. En otras palabras, todas las versiones etiquetadas 2.0aN preceden a las 2.0bN, que preceden a las etiquetadas 2.0cN, y todas esas preceden a la 2.0.

También puedes encontrar números de versión con un sufijo «+», por ejemplo «2.2+». Estas son versiones sin lanzar, construidas directamente desde el repositorio de desarrollo de CPython. En la práctica, luego de que un lanzamiento menor se realiza, la versión es incrementada a la siguiente versión menor, que se vuelve «a0», por ejemplo «2.4a0».

Mira también la documentación para sys.version, sys.hexversion, y sys.version_info.

¿Cómo obtengo una copia del código fuente de Python?

El código fuente de la versión más reciente de Python está siempre disponible desde python.org, en https://www.python.org/downloads/. El código fuente en desarrollo más reciente se puede obtener en https://github.com/python/cpython/.

La distribución de fuentes es un archivo tar comprimido con gzip que contiene el código C completo, documentación en formato Sphinx, los módulos de la biblioteca de Python, programas de ejemplo y varias piezas útiles de software libremente distribuibles. El código fuente compilará y se ejecutará sin problemas en la mayoría de las plataformas Unix.

Consulta Getting Started section of the Python Developer’s Guide para más información sobre cómo obtener el código fuente y compilarlo.

¿Cómo consigo documentación sobre Python?

La documentación estándar para la versión estable actual de Python está disponible en https://docs.python.org/3/. También están disponibles versiones en PDF, texto plano y HTML descargable en https://docs.python.org/3/download.html.

La documentación está escrita en reStructuredText y procesada con la herramienta de documentación Sphinx. Las fuentes reStructuredText de la documentación son parte de la distribución fuente de Python.

Nunca he programado antes. ¿Hay un tutorial de Python?

Hay numerosos tutoriales y libros disponibles. La documentación estándar incluye Tutorial de Python.

Consulta the Beginner’s Guide para encontrar información para principiantes en Python, incluyendo una lista de tutoriales.

¿Hay un newsgroup o una lista de correo dedicada a Python?

Hay un grupo de noticias, comp.lang.python, y una lista de correo, python-list. Tanto el grupo de noticias como la lista de correo están interconectadas entre sí – si puedes leer las noticias no es necesario que te suscribas a la lista de correo. comp.lang.python tiene mucho tráfico, recibiendo cientos de publicaciones cada día. y los lectores de Usenet suelen ser más capaces de hacer frente a este volumen.

Los anuncios de nuevos lanzamientos de software y eventos se pueden encontrar en comp.lang.python.announce, una lista moderada de bajo tráfico que recibe alrededor de cinco publicaciones por día. Está disponible como la lista de correos de anuncios de Python.

Más información sobre listas de correo o grupos de noticias puede hallarse en https://www.python.org/community/lists/.

¿Cómo obtengo una versión de prueba beta de Python?

Las versiones alpha y beta están disponibles desde https://www.python.org/downloads/. Todos los lanzamientos son anunciados en el grupo de noticias comp.lang.python y comp.lang.python.announce, así como también en la página principal de Python en https://www.python.org/; un feed RSS está disponible.

También puedes acceder a la versión en desarrollo de Python desde Git. Mira The Python Developer’s Guide para los detalles.

¿Cómo envío un reporte de bug y parches para Python?

Para reportar un bug o enviar un parche, por favor usa la instalación de Roundup en https://bugs.python.org/.

Debes tener una cuenta de Roundup para reportar bugs; esto nos permite contactarte si tenemos más preguntas. También permite que Roundup te envíe actualizaciones cuando haya actualizaciones sobre tu bug. Si previamente usaste SourceForge para reportar bugs a Python, puedes obtener tu contraseña de Roundup a través del procedimiento de reinicio de contraseña de Roundup.

Para más información sobre cómo se desarrolla Python, consulta the Python Developer’s Guide.

¿Hay algún artículo publicado sobre Python que pueda referir?

Lo más probable es que lo mejor sea citar a tu libro preferido sobre Python.

El primer artículo publicado sobre Python fue escrito en 1991 y quedó bastante desactualizado.

Guido van Rossum y Jelke de Boer, «Interactively Testing Remote Servers Using the Python Programming Language», CWI Quarterly, Volume 4, Issue 4 (Diembre de 1991), Amsterdam, pp 283–303.

¿Hay libros sobre Python?

Sí, hay muchos, y hay más siendo publicados. Mira la wiki de python.org en https://wiki.python.org/moin/PythonBooks para ver una lista.

También puedes buscar «Python» en las librerías online y excluir las que refieran a los Monty Python; o quizás buscar «Python» y «lenguaje».

¿En qué parte del mundo está ubicado www.python.org?

La infraestructura del proyecto Python está ubicada alrededor de todo el mundo y es gestionada por el Python Infraestructure Team. Detalles aquí.

¿Por qué se llama Python?

Cuando comenzó a implementar Python, Guido van Rossum también estaba leyendo los guiones publicados de «Monty Python’s Flying Circus», una serie de comedia producida por la BBC de los 70”. Van Rossum pensó que necesitaba un nombre que fuera corto, único y ligeramente misterioso, entonces decidió llamar al lenguaje Python.

Python en el mundo real

¿Cuán estable es Python?

Very stable. New, stable releases have been coming out roughly every 6 to 18 months since 1991, and this seems likely to continue. As of version 3.9, Python will have a major new release every 12 months (PEP 602).

Los desarrolladores publican lanzamientos de «bugfix» (corrección de errores) para versiones antiguas, así que la estabilidad de las versiones existentes mejora gradualmente. Los lanzamientos de corrección de errores, indicados por el tercer componente del número de versión (e.g 3.5.3, 3.6.2) son gestionados para estabilidad; sólo correcciones de problemas conocidos se incluyen en uno de estos lanzamientos, y está garantizado que las interfaces se mantendrán a lo largo de la misma serie.

La última versión estable siempre se puede encontrar en la página Python download page. Hay dos versiones de Python que están listas para producción: la 3.x y la 2.x. La versión recomendada es la 3.x, que es soportada por la mayoría de las bibliotecas más usadas. Aunque la versión 2.x aún se usa, no es mantenida desde el 1º de enero de 2020.

¿Cuánta gente usa Python?

There are probably millions of users, though it’s difficult to obtain an exact count.

Python está disponible gratuitamente para ser descargado por lo que no existen cifras de ventas, a su vez se incluye en muchos sitios diferentes y está empaquetado en muchas distribuciones de Linux, por lo que las estadísticas de descarga tampoco cuentan toda la historia.

El grupo de noticias comp.lang.python es muy activo, pero no todos los usuarios de Python publican allí o incluso lo leen.

¿Hay proyectos significativos hechos con Python?

Mira https://www.python.org/about/success para una lista de proyecto que usan Python. Consultar las actas de conferencias de Python pasadas revelará contribuciones de diferentes empresas y organizaciones.

Proyectos en Python de alto perfil incluyen el gestor de listas de correo Mailman y el servidor de aplicaciones Zope. Muchas distribuciones de Linux, más notoriamente Red Hat, han escrito partes de sus instaladores y software de administración en Python. Entre las empresas que usan Python internamente se encuentran Google, Yahoo y Lucasfilm Ltd.

¿Qué nuevos desarrollos se esperan para Python en el futuro?

Mira https://www.python.org/dev/peps/ para las Python Enhancement Proposals («Propuestas de mejora de Python», PEPs). Las PEPs son documentos de diseño que describen una nueva funcionalidad sugerida para Python, proveyendo una especificación técnica concisa y una razón fundamental. Busca una PEP titulada «Python X.Y Release Schedule», donde X.Y es una versión que aún no ha sido publicada.

Los nuevos desarrollos son discutidos en la lista de correo python-dev.

¿Es razonable proponer cambios incompatibles a Python?

En general no. Ya existen millones de líneas de código Python alrededor del mundo, por lo que cualquier cambio en el lenguaje que invalide más que una fracción muy pequeña de los programas existentes tiene que ser mal visto. Incluso si puedes proporcionar un programa de conversión, todavía existe el problema de actualizar toda la documentación; se han escrito muchos libros sobre Python y no queremos invalidarlos a todos de un plumazo.

Si una funcionalidad se debe cambiar, es necesario proporcionar una ruta de actualización gradual. PEP 5 describe el procedimiento seguido para introducir cambios incompatibles con versiones anteriores para minimizar disrupciones a los usuarios y usuarias.

¿Python es un buen lenguaje para principiantes?

Sí.

Todavía es común hacer comenzar a estudiantes con lenguajes procedimentales de tipado estático como Pascal, C o un subconjunto de C++ o Java. Los y las estudiantes pueden verse favorecidos si aprenden Python como primer lenguaje. Python tiene una sintaxis simple y consistente y una gran biblioteca estándar. Y, más importante, usar Python en cursos introductorios de programación permite a los estudiantes concentrarse en lo importante de las habilidades de programación como la descomposición de problemas y el diseño de tipos de datos. Con Python los estudiantes pueden ser rápidamente introducidos a conceptos como bucles y procedimientos. Incluso puede trabajar con objetos definidos por el usuario en su primer curso.

Para estudiantes que nunca han programado antes, usar un lenguaje de tipado estático parece antinatural. Presenta complejidades adicionales que deben ser dominadas y ralentizan el ritmo del curso. Quienes están aprendiendo intentan pensar como la computadora, descomponer problemas, diseñar interfaces consistentes y encapsular datos. Si bien aprender a usar un lenguaje de tipado estático es importante en el largo plazo, no es necesariamente el mejor tema a tratar en un primer curso de programación.

Muchos otros aspectos de Python lo vuelven un buen primer lenguaje. Como Java, Python tiene una biblioteca estándar, de manera que los y las estudiantes pueden recibir, de manera temprana, consignas para realizar proyectos de programación que hagan algo. Estas consignas no están restringidas a las típicas calculadoras de cuatro operaciones o programas de balances contables. Al usar la biblioteca estándar, pueden ganar la satisfacción de trabajar en aplicaciones realistas mientras aprenden los fundamentos de la programación. Usar la biblioteca estándar también enseña a reusar código. Módulos de terceros, como PyGame, también ayudan a extender los alcances de los y las estudiantes.

El intérprete interactivo de Python les permite probar funcionalidades del lenguaje mientras programan. Pueden tener una ventana con el intérprete corriendo mientras escriben el código de su programa en otra. Si no recuerdan los métodos para una lista, pueden hacer algo así:

>>> L = []
>>> dir(L) 
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

>>> help(L.append)
Help on built-in function append:

append(...)
    L.append(object) -> None -- append object to end

>>> L.append(1)
>>> L
[1]

Con el intérprete, la documentación nunca está lejos de los o las estudiantes mientras están programando.

También hay buenas IDEs para Python. IDLE es una IDE multiplataforma para Python que está escrita en Python usando Tkinter. PythonWin es un IDE específico para Windows. Quienes usan Emacs estarán felices de saber que hay un modo para Python muy bueno. Todos estos entornos de programación proveen resaltado de sintaxis, auto-sangrado y acceso al intérprete interactivo mientras se programa. Consulta la wiki de Python para ver una lista completa de entornos de programación.

Si quieres discutir el uso de Python en la educación, quizás te interese unirte a la la lista de correo edu-sig.