Software">
Introducción a Python: Características y Usos
Introducción a Python: Características y Usos
Características de Python
A continuación se describe brevemente cada característica formal del lenguaje y algunas no tan
formales:
Lenguaje de alto nivel: este lenguaje pertenece a uno de los más alejados del código máquina
que existe. Este tipo de abstracción permite no tener que hacer gestión de memoria, tener tipado
dinámico, tener una máquina virtual o ser interpretado, etc.
Interpretado: permite desarrollar código sin tener que compilar el mismo para cada sistema,
mejorando así el tiempo de desarrollo.
De propósito general: se puede utilizar en diferentes áreas de la informática. Algunos ejemplos
pueden ser el desarrollo web, de escritorio, ciencia, ciencia de datos, ciberseguridad, desarrollo de
videojuegos, etc.
Multiparadigma: soporta diferentes paradigmas de programación como la programación
imperativa, programación orientada a objetos (poo) y programación funcional.
Multiplataforma: gracias a su máquina virtual, puede ser ejecutado en diferentes sistemas
operativos. Ejemplos como: windows, ubuntu, debian (linux en general, macos X o más exóticos
como android.
Dinámicamente tipado: permite que las variables cambien de tipo de dato dinámicamente, y que
no haya que definir a priori el tipo del mismo.
Fuertemente tipado: las variables instanciadas son de un tipo único, y no se pueden actuar o
interactuar con otros tipos no soportados. Ej: ‘1’ + 1 dará error en vez de 2.
Y otras características no tan formales pero muy importantes:
De sintaxis clara y concisa: permite escribir código como si se tratase de una receta en inglés,
más que un lenguaje de programación.
Con reglas de estilos: gracias al PEP 8, los desarrolladores de python tienen unas reglas de estilos
marcadas. Su uso lo que permite que todo el código producido sea consistente.
En auge: aunque se creó en la década de los 90, hoy día se utiliza como lenguaje principal en
muchos desarrollos. Cada día se utiliza más y la demanda de programadores cualificados está en
aumento.
De prototipado rápido: permite crear programas rápidamente, lo que supone mejora de costes de
producción para empresas.
De código libre y con una gran comunidad: tiene una de las mejores comunidades del mundo.
Constantemente se comparte conocimiento y hay una gran voluntad por usar código libre.
Campos en los que se usa Python
Gracias a ser un lenguaje de carácter general, Python se utiliza en múltiples campos como:
Ciencia: para el cálculo científico se utiliza gracias a su fácil aprendizaje y su gran potencial.
Ciencia de datos: uno de los pilares fundamentales, en los que se usa para Machine Learning,
Inteligencia Artificial, visión por computador, data mining, etc.
Desarrollo web: otro de los pilares fundamentales con ejemplos como Pinterest, Instagram o
miles de compañías. Estas compañías usan principalmente Django o Flask para sus principales
aplicaciones y negocios.
Aplicaciones de escritorio: multitud de aplicaciones escritas en python usando pyGTK, pyQT o
tkinter. La gran mayoría para linux pero también para otros sistemas operativos.
Desarrollo de videojuegos: para pequeños video juegos utilizando pygame.
Ciberseguridad: gracias a su facilidad de uso se integra fácilmente con otras herramientas,
scrapping, análisis de programas, de malwares y muchos otros puntos.
Finanzas: es uno de los campos en auge para Python, tanto en criptomonedas, trading, o análisis
de datos financieros, creación de gráficos.
Scripting: uno de los principales usos que tiene este lenguaje es la integración de pequeñas o
grandes tareas de sistemas más complejos. Este tipo de pequeños programas se denomina scripts y
son utilizados extensivamente.
Historia de Python y sus versiones
Python se empieza a crear a finales del año 1989 y la primera versión vio la luz a principios del año
1992. Fue desarrollada por Guido Van Rossum y gracias a eso se le conoce como Belnevolente
Ditador Vitalicio.
Ramas y versiones del lenguaje:
Rama 1.x: en el 1994 salió la primera versión estable llamada Python 1.0. La rama 1.x llegó hasta
el año 2000 finalizando en Python 1.6.
Rama 2.x: python 2.0 aparece en el año 2000 y ha llegado hasta enero del 2020. La última
versión ha sido la 2.7 y actualmente ya no recibe actualizaciones.
Rama 3.x: la versión 3.0 aparece a finales de 2008 y es la actual. Hay que destacar Python 3.5
donde se hicieron mejoras significativas y desde entonces ha habido muchos cambios. Las versiones
Python 3.7, Python 3.8 y Python 3.9 han supuesto nuevos operadores, mejoras significativas de
velocidad y un largo etcétera.
Sintaxis de Python
A continuación se muestra la sintaxis y conceptos básicos del lenguaje
Indentación
Toda la lógica del lenguaje se define según la indentación del código.
A diferencia de otros lenguajes en los que se utilizan caracteres de apertura y cierre de bloques
lógicos (como {} o begin-end), Python solo utiliza la cantidad de indentación para definir la lógica.
>>> def counter(x, times, step):
... for i in range(times):
... x += step
... return x
...
>>> counter(5, 2, 4)
13
>>> if 'a' in 'hello':
... print('Yes')
... else:
... print('No')
...
No
La PEP 8 regula que las indentaciones deben de hacerse utilizando 4 caracteres espacio, y desde
Python 3 no se permite mezclar tabulaciones con espacios.
Expresividad
Una de las particularidades de Python es su gran expresividad y claridad que aporta su sintaxis.
La consecuencia de tener una clara y concisa es que al leer el lenguaje da la sensación de estar
leyendo una receta de cocina en inglés más que leyendo un código de programación.
import random
def number_of_steps(max_steps=10):
return [Link](max_steps)
def move(position):
return position + number_of_steps()
if __name__ == '__main__':
initial_pos = 0
curr_position = initial_pos
for step in range(3):
next_position = move(curr_position)
curr_position = next_position
print(f'Posición actualizada a {curr_position}')
# Posición actualizada a 3
# Posición actualizada a 9
# Posición actualizada a 16
# La posición final es 16
Gracias a la PEP 8, Python está muy bien definido a nivel de estilos.
Comentarios
Los comentarios en Python se añaden utilizando el caracter # y se añaden de la siguiente forma:
Comentarios de línea: se añaden en la misma línea con 2 espacios antes y uno después del
carácter #.
Comentarios de varias líneas: se añaden con literales de cadenas de caracteres definidos con 3
caracteres de comillas simples o dobles. Siempre se añaden con la primera letra en mayúscula salvo
que sea un nombre de identificador.
Docstring: un tipo especial de comentario es los usados como documentación de funciones. Estos
comentarios se añaden en la primera línea de cada función y se pueden acceder como __doc__ o
con la función doc.
def greater_than(a, b):
"""Checking if a is greater than b"""
return a > b
"""comment
multi line
"""
if __name__ == '__main__':
print(greater_than.__doc__)
print(greater_than(5, 6))
# Checking if a is greater than b
# False
# Centos/Fedora (yum)
$ sudo yum install gcc openssl-devel bzip2-devel libffi-devel
## Instalación desde código fuente
$ cd /tmp
$ wget [Link]
$ tar xzf [Link]
$ cd Python-3.9.0
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
Cuando se instala una nueva versión a nivel de sistema es importante utilizar make altinstall en vez
de make install para instalar de forma alternativa a la versión instalada y utilizada en el sistema.
Instalación de Python en Mac os X
Python se encuentra instalado en MacOS X por defecto aunque seguramente no esté instalada la
última versión o la versión que se desee utilizar.
Se puede instalar Python en Mac OS X descargando el archivo .pkg aquí y el instalador te guia
fácilmente.
Este proceso instala tanto el intérprete que se puede acceder por cualquier terminal, el programa
IDLE para desarrollar aplicaciones de Python y un lanzador que permite ejecutar módulos de
Python desde Finder.
Sin embargo, también se puede También se puede instalar Python usando el gestor de paquetes brew
utilizando los siguientes comandos en una consola.
# instalar brew
$ /bin/bash -c "$(curl -fsSL [Link]
# instalar python
$ brew install python
ptpython
ptpython es un REPL que presenta funcionalidades avanzadas como:
Autocompletado: tiene un autocompletado de código y de argumentos de funciones.
Representación de objetos para pt: permite que se haga una representación especial para el
REPL al definir el método __pt__repr__ de una clase.
Edición de multilínea: usando las flechas del teclado se puede cambiar líneas insertadas
anteriormente.
Soporte de teclas de Vi y de Emacs: permite utilizar la configuración de edición rápida utilizada
en vi y emacs para editar rápidamente el código.
Soporte de ratón: permite utilizar el ratón para navegar por el menu.
Soporte para comandos de ipython: si se instala ipython permite acceder a las funciones
mágicas usando ptipython en vez de ptpython.
Integración del REPL en código: permite fácilmente integrar el REPL dentro de código python
usando.
from [Link] import embed
embed(globals(), locals())
Se puede instalar utilizando pip y la documentación oficial se encuentra aquí.
pip install ptpython
Opinión personal: bpython, junto con ipython son los que más uso en mi dia a dia, siendo una
alternativa a tener en cuenta sobre el REPL que trae Python por defecto, el cual es de gran ayuda
también.
Los comandos de navegación en REPL y shells
Ctrl-a y Ctrl-e: mueve el cursor hasta el inicio o el final de la línea.
Ctrl-b y Ctrl-f: mueve el cursor un carácter hacia adelante o hacia atrás.
Ctrl-d: elimina el siguiente carácter.
Ctrl-k y Ctrl-u: corta los caracteres desde el cursor hasta el final de la línea o hasta el inicio de la
misma.
Ctrl-y: pega el código copiado anteriormente.
Ctrl-p y Ctrl-n: para acceder al anterior o al siguiente comando ejecutado.
Ctrl-r: permite buscar algún comando ejecutado anteriormente.
Ctrl-c y Ctrl-d: interrumpe la ejecución y sale del programa respectivamente.
Editores para programar en Python
Cuando necesitamos una herramienta más completa para trabajar en forma más intensiva con
Python el entorno IDLE nos puede quedar limitado.
Veremos ahora otros editores que facilitan la programación en Python y elegiremos uno de ellos
para continuar estudiando Python:
PyCharm: Es un entorno de desarrollo creado por la empresa Jet Brains. Viene en dos versiones, la
básica que es open source y la podemos descargar del sitio de: JetBrains
En la misma página tenemos el enlace para registrarnos y comprar la versión profesional.
PyDev IDE: Este entorno de desarrollo es una adaptación del editor Eclipse. Lo podemos descargar
del sitio de: pydev
Es open source al igual que el editor Eclipse.
Wing: Es un entorno para trabajar con Python con numerosas herramientas para programar y
depurar programas. Hay una versión gratuita, pero la que tiene todas las herramientas es comercial.
Podemos descargar este entorno del sitio: wingware
VS Code: Es un editor de texto que agregando extensiones podemos trabajar con Python con
herramientas para programar y depurar programas. Es creado y mantenido por la empresa
Microsoft. Es open source y multiplataforma (Windows, Linux y Mac)
En el último año se esta convirtiendo en el editor de texto más utilizado por los programadores
profesionales de todo el mundo.
Otro dato que nos puede hacer dimensionar el empleo de Visual Studio Code para programar con
Python es la cantidad de descargas de la extensión:
Instalación del editor Visual Studio Code (VSCode) y de la
extensión para Python
El editor de texto VSCode ha sido creado y es mantenido por Microsoft. Lo distribuye con licencia
Open Source y por lo tanto en forma gratuita. Lo debemos descargar del sitio
[Link], como podemos comprobar está disponible tanto para Windows, Mac y
Linux:
Una vez descargado procedemos a instalarlo siguiendo los pasos del asistente:
Ya tenemos instalado y funcionando VSCode:
El tema o aspecto visual por defecto es el oscuro, pero para que se vea más fácil en este tutorial lo
cambiaremos por un aspecto más claro.
Para cambiar el tema presionamos el botón del engranaje en la parte inferior izquierda y
seleccionamos "Tema de color":
Yo seleccionaré el tema "Light + (default light)":
Podemos cerrar la pestaña de bienvenida y tendremos el editor VSCode en su mínima expresión:
El resultado sin pestañas abiertas es:
Como vemos en el fondo del editor aparecen los 5 comandos más comunes que tenemos que hacer
normalmente cuando trabajamos con el editor de texto VSCode como puede ser "Abrir archivo" con
el atajo de teclas Ctrl + O.
Cuando seleccionamos una extensión se nos muestra una pestaña con toda la información de dicha
extensión:
Procederemos a su instalación presionando el botón "instalar" que aparece dentro de la pestaña de la
extensión, una vez instalada aparece un nuevo botón para que se recargue el VSCode y comience a
funcionar la extensión:
Ya tenemos todo listo para probar nuestro primer programa en Python utilizando el editor VS Code,
procedemos a crear un archivo '[Link]' y codificar:
Programa: [Link]
lado=input("Ingrese la medida del lado del cuadrado:")
lado=int(lado)
superficie=lado*lado
print(superficie)
Podemos ahora abrir la opción de depurar y proceder a ejecutar nuestra aplicación en Python:
Acotaciones
Hemos visto en forma resumida los pasos para la instalación del editor VS Code y de la extensión
para trabajar con Python.
La indentación tambien se aplica a sentencias que ocupen más de una línea como llamadas a
funciones o definiones de tipos de datos, los cuales deben de respetar una indentación visual
apropiada que distinga la sentencia del código siguiente
# Mal - no se distingue los argumentos
# y el codigo de la funcion
def mi_funcion_con_argumentos(argumento1,
argumento2,
argumento3):
print(argumento1)
# Bien
def mi_funcion_con_argumentos(argumento1,
argumento2,
argumento3):
print(argumento1)
# Bien
patas_totales = (num_patas_gato
+ num_patas_pato
+ num_patas_perro)
def mi_funcion(a):
return a + 4
class Perro:
peso = 1.7
def ladra(self):
print('guau')
def come(self):
if [Link] < 1.5:
[Link] = 1.9
else:
[Link] += 0.2
Importaciones de código
Para las importaciones de paquetes existen algunas reglas también.
El uso de import debe de ser en líneas separadas.
El orden de importación es: librería estándar, librerías de terceros, librerías propias o locales.
Las importaciones absolutas son los recomendados.
Los importaciones relativas solo pueden ser explícitas y preferiblemente simples y cortas.
Importaciones usando * (wildcard) deben de ser evitadas.
# Mal
import json, sys
# Bien
import json
import sys
# Bien
from json import dump, load
# importacion absoluta
import [Link]
from pkg import funciones
from [Link] import mi_funcion
# importacion relativa
from . import funciones
from .funciones import mi_funcion
# evitar!
from pkg import *
Variables de módulo
Las variables de módulo definen ciertos aspectos generales:
__all__: define qué objetos se importarán al hacer uso de import *.
__author__: define el autor del módulo.
__version__: define la versión del módulo actual.
Todas estas definiciones han de hacerse al comienzo del módulo, justo debajo del bloque de
importaciones.
Cadenas de caracteres
Python soporta diferentes tipos de caracteres para crear cadenas de caracteres siendo simples o
triples, comillas simples o dobles.
Comillas simples o dobles: para cadenas de caracteres de una línea o varias.
Triples comillas dobles: para cadenas de documentación y bloques de cadenas de caracteres.
Para escapar con facilidad las comillas simples o dobles se pueden utilizar un tipo u otro.
def mi_funcion():
"""Sección de documentación con triples comillas dobles"""
pass
Espacios en blanco
Los espacios en blanco en Python se utilizan para aclarar o remarcar partes del código, pero hay que
hacer un uso contenido de los mismos definiendo las siguientes reglas:
Añadir espacios: entre elementos separados por comas, en los lados de una evaluación
operacional, en una asignación o separando bloques de operaciones.
Evitar espacios: en slicings, entre los nombres de funciones y la llamada, entre las variables y el
acceso interno usando [], operaciones logicamente unidas o en parentesis vacios.
# Bien
mi_funcion(param1, [1, 2])
a += 1
i=i+1
b = a*2 - 1
c = (a+i) * (a-i)
if a == b:
print(a + 'es igual que' + b)
gato = 1
perro = 2
elefante_marron = 4
# Mal
mi_funcion ( param1, [ 1, 2] )
a +=1
i=i+1
b=a*2-1
c = (a + i) * (a - i)
if a==b:
print (a+'es igual que' + b)
gato =1
perro =2
elefante_marron = 4
Comas finales
El uso de comas al final de una variable debe de hacerse en una nueva línea, y hay que recordar que
las comas al final de una variable crean tuplas, por tanto hacerlas explicitamente es mejor.
# Bien
variable = ('123',)
mi_funcion(param1,
param2,
)
# Mal
variable = '123', # creará una tupla de forma implicita
mi_funcion(param1, param2,) # la ultima coma sobra
Otra buena razon por la que en listas y tuplas es bueno dejar la coma al final, si el lenguaje lo
soporta, es para que cuando se editen añadiendo nuevos elementos, no se modifica la línea que
ya existia, dejando intacto el historial de cambios.
Comentarios
La PEP 8 contempla muchas reglas sobre cómo tratar los comentarios que se pueden ver a
continuación:
Los comentarios pueden ser contradictorios, y requiren que se actualicen con el código, por tanto
si se pueden evitar haciendo código más claro, mejor.
Deben de componerse de frases completas.
Deben de comenzar en mayuscula a no ser que comiencen con el nombre de un identificador, el
cual se respetará siempre su tamaño.
Los bloques de comentarios se componen de varios parrafos terminados en puntos, y terminar en
dos espacios en blancos salvo la ultima frase.
Los comentarios deben de ser en Ingles a no ser «que se esté 120%» seguro de que se leeran
siempre en otro idioma y serán claros.
Los bloques se aplican al código justo despues de donde se encuentran y con la misma
indentación.
Los comentarios de línea comienzan con al menos 2 espacios y un # y un espacio después.
Las cadenas de documentacion (docstrings) deben de añadirse en clases, funciones y métodos que
sean públicos siguiendo el PEP 257.
# Comentario de una línea antes del código principal
def funcion(primer_parametro, segundo_parametro):
"""Docstring para describir qué hace la función
Convenciones de nombres
Las siguientes reglas aplican para los nombres de cada tipo de objeto.
Caracteres a evitar: o, O, l y L (letra O y letra L) dado que se pueden confundir con un 0 o un 1
dependiendo del tipo de fuente usada.
Caracteres ASCII: se utilizan en la librería estándar siempre.
Nombre de modules y paquetes: se escriben en minúsculas y se desaconseja el uso de barras
bajas, manteniendo los nombres lo más cortos posibles.
Nombrado de clases: se usan el FormatoCapital, donde la primera letra de cada palabra es
mayúscula.
Nombres de tipos de variables: en FormatoCapital.
Excepciones: igual que el de clases pero con el sufijo «Error».
Nombres de variables y funciones: se usan palabras en minúscula separadas por barras bajas.
Métodos en clases: el primer parámetro para métodos de instancia es self y para métodos de clase
cls.
Constantes: en mayúsculas.
from vehiculos import Coche
MAXIMO_AVANZAR = 500
class LimiteDeKilometrosAlcanzadoError(Exception):
pass
class Saet(Coche):
posicion = 0
Anotaciones de variables
Desde la PEP 526 se introdujeron las anotaciones para las variables y se escriben como:
Declaracion: <nombre_variable>: <tipo>
Declaracion + inicializacion: <nombre_variable>: <tipo> = <valor_por_defecto>
# Bien
num_patas: int
class Coche:
num_ruedas: int = 4
# Mal
num_patas:int
class Coche:
num_ruedas: int=4
•
•