Curso Python
Curso Python
Python 3 es la versión más nueva (para ser precisos, la actual) del lenguaje. Está
atravesando su propio camino de evolución, creando sus propios estándares y
hábitos.
Estas dos versiones de Python no son compatibles entre sí. Las secuencias de
comandos de Python 2 no se ejecutarán en un entorno de Python 3 y viceversa,
por lo que si deseas que un intérprete de Python 3 ejecute el código Python 2
anterior, la única solución posible es volver a escribirlo, no desde cero, por
supuesto. Como grandes partes del código pueden permanecer intactas, pero
tienes que revisar todo el código para encontrar todas las incompatibilidades
posibles. Desafortunadamente, este proceso no puede ser completamente
automatizado.
Es importante recordar que puede haber diferencias mayores o menores entre las
siguientes versiones de Python 3 (p. Ej., Python 3.6 introdujo claves de diccionario
ordenadas de forma predeterminada en la implementación de CPython). La buena
noticia es que todas las versiones más nuevas de Python 3 son compatibles con
las versiones anteriores de Python 3. Siempre que sea significativo e importante,
siempre intentaremos resaltar esas diferencias en el curso.
Todos los ejemplos de código que encontrarás durante el curso se han probado
con Python 3.4, Python 3.6 y Python 3.7.
En primer lugar, están los Pythons que mantienen las personas reunidas en torno
a PSF (Python Software Foundation), una comunidad que tiene como objetivo
desarrollar, mejorar, expandir y popularizar Python y su entorno. El presidente del
PSF es el propio Guido van Rossum, y por esta razón, estos Pythons se
llaman canónicos. También se consideran Pythons de referencia, ya que cualquier
otra implementación del lenguaje debe seguir todos los estándares establecidos
por el PSF.
Guido van Rossum utilizó el lenguaje de programación "C" para implementar la
primera versión de su lenguaje y esta decisión aún está vigente. Todos los
Pythons que vienen del PSF están escritos en el lenguaje "C". Hay muchas
razones para este enfoque y tiene muchas consecuencias. Una de ellos
(probablemente la más importante) es que gracias a él, Python puede ser portado
y migrado fácilmente a todas las plataformas con la capacidad de compilar y
ejecutar programas en lenguaje "C" (virtualmente todas las plataformas tienen esta
característica, lo que abre muchas expansiones y oportunidades para Python).
CYTHON
Otro miembro de la familia Python es Cython.
Cython es una de las posibles soluciones al rasgo de Python más doloroso: la falta
de eficiencia. Los cálculos matemáticos grandes y complejos pueden ser
fácilmente codificados en Python (mucho más fácil que en "C" o en cualquier otro
lenguaje tradicional), pero la ejecución del código resultante puede requerir mucho
tiempo.
"J" es para "Java". Imagina un Python escrito en Java en lugar de C. Esto es útil,
por ejemplo, si desarrollas sistemas grandes y complejos escritos completamente
en Java y deseas agregarles cierta flexibilidad de Python. El tradicional CPython
puede ser difícil de integrar en un entorno de este tipo, ya que C y Java viven en
mundos completamente diferentes y no comparten muchas ideas comunes.
PYPY Y RPYTHON
Echa un vistazo al logo de abajo. Es un rebus. ¿Puedes resolverlo?
Es un logotipo de PyPy - un Python dentro de un Python. En otras palabras,
representa un entorno de Python escrito en un lenguaje similar a Python
llamado RPython (Restricted Python). En realidad es un subconjunto de Python. El
código fuente de PyPy no se ejecuta de manera interpretativa, sino que se traduce
al lenguaje de programación C y luego se ejecuta por separado.
Esto es útil porque si deseas probar cualquier característica nueva que pueda ser
o no introducida en la implementación de Python, es más fácil verificarla con PyPy
que con CPython. Esta es la razón por la que PyPy es más una herramienta para
las personas que desarrollan Python que para el resto de los usuarios.
Esto no hace que PyPy sea menos importante o menos serio que CPython.
Hay muchos más Pythons diferentes en el mundo. Los encontrarás sí los buscas,
pero este curso se centrará en CPython.
Por ejemplo, algunas distribuciones pueden unir sus herramientas específicas con
el sistema y muchas de estas herramientas, como los administradores de
paquetes, a menudo están escritas en Python. Algunas partes de los entornos
gráficos disponibles en el mundo de Linux también pueden usar Python.
Por ejemplo, algunas distribuciones pueden unir sus herramientas específicas con
el sistema y muchas de estas herramientas, como los administradores de
paquetes, a menudo están escritas en Python. Algunas partes de los entornos
gráficos disponibles en el mundo de Linux también pueden usar Python.
Este será un procedimiento muy simple, pero debería ser suficiente para
convencerte de que el entorno de Python es completo y funcional.
Navega por los menús de tu sistema operativo, encuentra IDLE en algún lugar
debajo de Python 3.x y ejecútalo.
Mira todas las ventanas con cuidado. Aparece una nueva ventana: dice que el
intérprete ha encontrado un EOF (fin de archivo). La ventana del editor muestra
claramente donde ocurrió. Arregla el código ahora. Ejecútalo para ver si "sisea" de
nuevo. Vamos a arruinar el código una vez más. Elimina una letra de la
palabra print. Ejecuta el código presionando F5. Como puedes ver, Python no
puede reconocer el error.
Es posible que hayas notado que el mensaje de error generado para el error
anterior es bastante diferente del primero. Esto se debe a que la naturaleza del
error es diferente y el error se descubre en una etapa diferente de la
interpretación. La ventana del editor no proporcionará ninguna información útil
sobre el error, pero es posible que las ventanas de la consola sí. El mensaje en
rojo muestra en las siguientes líneas:
SANDBOX
Este curso no requiere que instales ninguna aplicación de software para probar tu
código y hacer los ejercicios. Para probar o experimentar con tu código, puedes
utilizar un entorno de programación en línea interactivo y dedicado.
Sandbox permite que el código Python se ejecute en un navegador de Internet. Es
una herramienta integrada dentro del curso, que se puede usar como un Sandbox
de Python basado en el navegador que te permite probar el código discutido a lo
largo del curso, así como un intérprete que te permite iniciar, realizar y probar los
ejercicios de laboratorio diseñados específicamente para este curso. La interfaz de
Sandbox consta de tres partes principales:
INTERFAZ DE PRÁCTICA
Este curso contiene cuatro tipos diferentes de interfaces. Hasta ahora, haz visto
la Interfaz de estudio (una o dos ventanas con texto e imágenes/animación) y
la Interfaz de Sandbox, que puedes usar para probar tu propio código (haz clic
en Sandbox para cambiar a la Interfaz de Sandbox). Lo que ves ahora es
la Interfaz de práctica, que te permite estudiar cosas nuevas y realizar tareas de
codificación al mismo tiempo. Utilizarás este tipo de interfaz la mayor parte del
tiempo durante el curso. La Interfaz de práctica consiste en un área de texto a la
izquierda y las ventanas del Editor/Consola a la derecha. Otro tipo de interfaz que
verás en el futuro es la Interfaz de prueba/examen, que te permitirá verificar tus
conocimientos y habilidades para ver que tan bien has dominado el material de
estudio.
TU PRIMER PROGRAMA
¡HOLA, MUNDO!
Es hora de comenzar a escribir código real y funcional en Python. Por el momento
será muy sencillo. Como se muestran algunos conceptos y términos
fundamentales, estos fragmentos de código no serán complejos ni difíciles.
Ejecuta el código en la ventana del editor a la derecha. Si todo sale bien, veras
la línea de texto en la ventana de consola. Como alternativa, inicia IDLE, crea un
nuevo archivo fuente de Python, coloca este código, nombra el archivo y guárdalo.
Ahora ejecútalo. Si todo sale bien, verás una línea en la ventana de la consola
IDLE. El código que has ejecutado debería parecerte familiar. Viste algo muy
similar cuando te guiamos a través de la configuración del entorno IDLE. Ahora
dedicaremos un poco de tiempo para mostrarte y explicarte lo que estás viendo y
por qué se ve así. Como puedes ver, el primer programa consta de las siguientes
partes:
La palabra print.
Un paréntesis de apertura.
Una comilla.
Una línea de texto: ¡Hola, Mundo!.
Otra comilla.
Un paréntesis de cierre.
Además, muchas de las funciones de Python pueden hacer las dos cosas
anteriores juntas.
Pueden venir de Python mismo. La función print es una de este tipo; dicha
función es un valor agregado de Python junto con su entorno,
está integrada; no tienes que hacer nada especial (por ejemplo, pedirle a
alguien algo) si quieres usarla.
Pueden provenir de uno o varios de los módulos de Python llamados
complementos; algunos de los módulos vienen con Python, otros pueden
requerir una instalación por separado, cual sea el caso, todos deben estar
conectados explícitamente con el código.
Puedes escribirlas tú mismo, colocando tantas funciones como desees y
necesites dentro de su programa para hacerlo más simple, claro y elegante.
Un efecto.
Un resultado.
También hay un tercer componente de la función, muy importante, el o
los argumento(s). Las funciones matemáticas usualmente toman un argumento,
por ejemplo, sen (x) toma una x, que es la medida de un ángulo. Las funciones de
Python, por otro lado, son más versátiles. Dependiendo de las necesidades
individuales, pueden aceptar cualquier número de argumentos, tantos como sea
necesario para realizar sus tareas. Algunas funciones de Python no necesitan
ningún argumento. A pesar del número de argumentos necesarios o
proporcionados, las funciones de Python demandan fuertemente la presencia
de un par de paréntesis - el de apertura y de cierre, respectivamente. Si deseas
entregar uno o más argumentos a una función, colócalos dentro de los paréntesis.
Si vas a utilizar una función que no tiene ningún argumento, aún tiene que tener
los paréntesis. Para distinguir las palabras comunes de los nombres de funciones,
coloca un par de paréntesis vacíos después de sus nombres, incluso si la función
correspondiente requiere uno o más argumentos. Esta es una medida estándar.
La función de la que estamos hablando aquí es print(). ¿La función print() en
nuestro ejemplo tiene algún argumento? Por supuesto que sí, pero ¿qué son los
argumentos?
El nombre de la función (print en este caso) junto con los paréntesis y los
argumentos, forman la invocación de la función. ¿Qué sucede cuando Python
encuentra una invocación como la que está a continuación?
nombreFunción(argumento).
FUNCIONES
¿POR QUÉ NECESITAMOS FUNCIONES?
Hasta ahorita has implementado varias veces el uso de funciones, pero solo se
han visto algunas de sus ventajas. Solo se han invocado funciones para utilizarlas
como herramientas, con el fin de hacer la vida más fácil, y para simplificar tareas
tediosas y repetitivas. Cuando se desea mostrar o imprimir algo en consola se
utiliza print(). Cuando se desea leer el valor de una variable se emplea input(),
combinados posiblemente con int() o float(). También se ha hecho uso de
algunos métodos, las cuales también son funciones, pero declarados de una
manera muy específica. Muy a menudo ocurre que un cierto fragmento de
código se repite muchas veces en un programa. Se repite de manera literal o con
algunas modificaciones menores, empleando algunas otras variables dentro del
programa. También ocurre que un programador ha comenzado a copiar y pegar
ciertas partes del código en más de una ocasión en el mismo programa. Puede ser
muy frustrante percatarse de repente que existe un error en el código copiado. El
programador tendrá que escarbar bastante para encontrar todos los lugares en el
código donde hay que corregir el error. Además, existe un gran riesgo de que las
correcciones produzcan errores adicionales. Definamos la primera condición por la
cual es una buena idea comenzar a escribir funciones propias: si un fragmento de
código comienza a aparecer en más de una ocasión, considera la posibilidad de
aislarlo en la forma de una función invocando la función desde el lugar en el que
originalmente se encontraba. Puede suceder que el algoritmo que se desea
implementar sea tan complejo que el código comience a crecer de manera
incontrolada y, de repente, ya no se puede navegar por él tan fácilmente.
Se puede intentar solucionar este problema comentando el código, pero pronto te
darás cuenta que esto empeorará la situación; demasiados comentarios hacen
que el código sea más difícil de leer y entender. Algunos dicen que una función
bien escrita debe ser comprensible con tan solo una mirada. Un buen
desarrollador divide el código o mejor dicho, el problema en piezas aisladas,
y codifica cada una de ellas en la forma de una función. Esto simplifica
considerablemente el trabajo del programa, debido a que cada pieza se codifica
por separado y consecuentemente se prueba por separado. A este proceso se le
llama comúnmente descomposición. Existe una segunda condición: si un
fragmento de código se hace tan extenso que leerlo o entenderlo se hace
complicado, considera dividirlo pequeños problemas por separado e implementa
cada uno de ellos como una función independiente. Esta descomposición continua
hasta que se obtiene un conjunto de funciones cortas, fáciles de comprender y
probar.
DESCOMPOSICIÓN
Es muy común que un programa sea tan largo y complejo que no puede ser
asignado a un solo desarrollador, y en su lugar un equipo de
desarrolladores trabajarán en él. El problema, debe ser dividido entre varios
desarrolladores de una manera en que se pueda asegurar su eficiencia y
cooperación. Es inconcebible que más de un programador deba escribir el mismo
código al mismo tiempo, por lo tanto, el trabajo debe de ser dividido entre todos los
miembros del equipo. Este tipo de descomposición tiene diferentes propósitos, no
solo se trata de compartir el trabajo, sino también de compartir la
responsabilidad entre varios desarrolladores. Cada uno debe escribir un conjunto
bien definido y claro de funciones, las cuales al ser combinadas dentro de un
módulo nos dará como resultado el producto final.
ESCRIBIR FUNCIONES
TU PRIMERA FUNCIÓN
Observa el fragmento de código en el editor.
print(“Ingresa un valor: ”)
a = int(input ())
print(“Ingresa un valor: ”)
b = int(input ())
print(“Ingresa un valor: ”)
c = int(input ())
def nombreFuncion():
cuerpoFuncion
def mensaje():
print("Ingresa un valor: ")
def mensaje():
print("Ingresa un valor: ")
def mensaje():
print("Ingresa un valor: ")