El Manual de Python
El Manual de Python
Foro Donar
El Manual de Python
Cristian Sulbaran
¡Que lo disfrutes!
Resumen
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 1/119
8/3/23, 19:37 El Manual de Python
Python 2 vs Python 3
Básicos en Python
Operadores en Python
Cadenas en Python
Booleanos en Python
Números en Python
Constantes en Python
Enums en Python
Listas en Python
Tuplas en Python
Diccionarios en Python
Conjuntos en Python
Funciones en Python
Objetos en Python
Bucles en Python
Clases en Python
Módulos en Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 2/119
8/3/23, 19:37 El Manual de Python
La guía de
Support estilo
our PEP8
charity anden
ourPython
mission. Donate to freeCodeCamp.org.
Depurando en Python
Recursión en Python
Closures en Python
Decoradores en Python
Docstrings en Python
Introspección en Python
Anotaciones en Python
Excepciones en Python
Polimorfismo en Python
Conclusión
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 3/119
8/3/23, 19:37 El Manual de Python
Introducción a Python
Python literalmente se está comiendo el mundo de la programación.
Está creciendo en popularidad y uso de formas que no tienen
precedentes en la historia de las computadoras.
Gracias a esta posición única, es probable que Python crezca aún más
en el futuro.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 4/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 5/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 6/119
8/3/23, 19:37 El Manual de Python
Los lenguajes de nivel inferior como C++ y Rust pueden ser excelentes
para programadores expertos, pero son desalentadores para empezar
y requieren mucho tiempo para dominarlos.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 7/119
8/3/23, 19:37 El Manual de Python
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 8/119
8/3/23, 19:37 El Manual de Python
nombre = "Flavio"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 9/119
8/3/23, 19:37 El Manual de Python
Foro Donar
print(nombre)
Support our charity and our mission. Donate to freeCodeCamp.org.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 10/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Esos son los básicos que vienen con Python de forma predeterminada.
Sin embargo, recomiendo que instales IPython, probablemente la
mejor aplicación REPL de línea de comandos que puedas encontrar.
Instálalo con
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 11/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 13/119
8/3/23, 19:37 El Manual de Python
Foro Donar
./program.py
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 14/119
8/3/23, 19:37 El Manual de Python
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 15/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 16/119
8/3/23, 19:37 El Manual de Python
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 17/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 18/119
8/3/23, 19:37 El Manual de Python
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 19/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Una vez que tengas algo de código, haz clic en Run para ejecutarlo en
el lado derecho de la ventana:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 20/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Python 2 vs Python 3
Un tema clave que debemos abordar, desde el principio, es la discusión
de Python 2 vs Python 3.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 21/119
8/3/23, 19:37 El Manual de Python
Pero el código nuevo, a menos que tengas que cumplir con las reglas
establecidas por tu organización que obliguen a usar Python 2,
siempre debe escribirse en Python 3.
Básicos en Python
Variables en Python
Podemos crear una nueva variable de Python asignando un valor a
una etiqueta, usando el operador de asignación = .
nombre = "Roger"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 22/119
8/3/23, 19:37 El Manual de Python
edad = 8
nombre1
EDAD
eDAD
a11111
mi_nombre
_nombre
123
prueba!
nombre%
Aparte de eso, cualquier cosa es válida a menos que sea una palabra
clave de Python. Hay algunas palabras clave como for , if , while ,
import y más.
Foro Donar
Expresiones y declaraciones en Python
Support
Podemos our charity
expresar and our
cualquier mission.
tipo Donate
de código quetodevuelva
freeCodeCamp.org.
un valor. Por
ejemplo
1 + 1
"Roger"
Una declaración, por otro lado, es una operación sobre un valor. Por
ejemplo, estas son 2 declaraciones:
nombre = "Roger"
print(nombre)
Comentar
En un programa de Python, todo lo que aparece después de una marca
# se ignora y se considera un comentario.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 24/119
8/3/23, 19:37 El Manual de Python
Indentación en Python
La indentación en Python es significativa.
nombre = "Flavio"
print(nombre)
nombre = "Roger"
nombre = "Roger"
type(nombre) == str #True
O usando isinstance() :
nombre = "Roger"
isinstance(nombre, str) #True
Usamos la clase str aquí, pero lo mismo funciona para otros tipos de
datos.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 26/119
8/3/23, 19:37 El Manual de Python
Foro Donar
edad = 1
Support our charity and our mission. Donate to freeCodeCamp.org.
type(edad) == int #True
fraccion = 0.1
type(fraccion) == float #True
nombre = "Flavio"
edad = 20
nombre = str("Flavio")
otroNombre = str(nombre)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 27/119
8/3/23, 19:37 El Manual de Python
edad = int("20")
Foro Donar
print(edad) #20
Support our charity and our mission. Donate to freeCodeCamp.org.
fraccion = 0.1
fraccionEntera = int(fraccion)
print(fraccionEntera) #0
¡y más!
Operadores en Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 28/119
8/3/23, 19:37 El Manual de Python
Operador de asignación
Operadores aritméticos
Operadores de comparación
Operadores lógicos
edad = 8
edad = 8
otraVariable = edad
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 29/119
8/3/23, 19:37 El Manual de Python
Desde Python 3.8, el operador walrus(morsa) := se usa para asignar Donar
Foro
un valor a una variable como parte de otra operación. Por ejemplo,
Support our charity and our mission. Donate to freeCodeCamp.org.
dentro de un if o en la parte condicional de un bucle. Más sobre eso
luego.
1 + 1 #2
2 - 1 #1
2 * 2 #4
4 / 2 #2
4 % 3 #1
4 ** 2 #16
4 // 2 #2
print(-4) #-4
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 30/119
8/3/23, 19:37 El Manual de Python
+=
-=
*=
/=
%=
...y así
Ejemplo:
edad = 8
edad += 1
#edad es ahora 9
==
!=
>
<
>=
<=
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 31/119
8/3/23, 19:37 El Manual de Python
a = 1
b = 2
a == b #False
a != b #True
a > b #False
a <= b #True
not
and
or
condicion1 = True
condicion2 = False
print(0 or 1) ## 1
print(False or 'hey') ## 'hey'
print('hola' or 'hey') ## 'hola'
print([] or False) ## 'False'
print(False or []) ## '[]'
print(0 and 1) ## 0
print(1 and 0) ## 0
print(False and 'hey') ## False
print('hola' and 'hey') ## 'hey'
print([] and False ) ## []
print(False and [] ) ## False
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 33/119
8/3/23, 19:37 El Manual de Python
| realiza el binario OR
is e in en Python
is se llama el operador de identidad. Se utiliza para comparar dos
objetos y devuelve verdadero si ambos son el mismo objeto. Más
sobre objetos luego.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 34/119
8/3/23, 19:37 El Manual de Python
En lugar de escribir:
def es_adulto(edad):
if edad > 18:
return True
else:
return False
def es_adulto(edad):
return True if edad > 18 else False
Cadenas en Python
Una cadena en Python es una serie de caracteres entre comillas o
comillas dobles:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 35/119
8/3/23, 19:37 El Manual de Python
"Roger"
Foro Donar
'Roger'
Support our charity and our mission. Donate to freeCodeCamp.org.
nombre = "Roger"
nombre = "Roger"
nombre += " es un buen perro"
str(8) #"8"
Foro Donar
print("Roger tiene " + str(8) + " a_os de edad")
Support our charity and our mission. Donate to freeCodeCamp.org.
#Roger tiene 8 a_os de edad
Una cadena puede ser de varias líneas cuando se define con una
sintaxis especial, encerrando la cadena en un conjunto de 3 comillas:
print("""Roger tiene
a_os de edad
""")
print('''
Roger tiene
a_os de edad
''')
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 37/119
8/3/23, 19:37 El Manual de Python
Y muchas mas.
nombre = "Roger"
print(nombre.lower()) #"roger"
print(nombre) #"Roger"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 38/119
8/3/23, 19:37 El Manual de Python
nombre = "Roger"
print(len(nombre)) #5
nombre = "Roger"
print("ger" in nombre) #True
Por ejemplo, ¿cómo agregas una comilla doble en una cadena que está
envuelta en comillas dobles?
nombre = "Roger"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 39/119
8/3/23, 19:37 El Manual de Python
Foro Donar
nombre = "Ro\"ger"
Support our charity and our mission. Donate to freeCodeCamp.org.
#"Ro"ger"
nombre = "Roger"
nombre[0] #'R'
nombre[1] #'o'
nombre[2] #'g'
nombre = "Roger"
nombre[-1] #"r"
nombre = "Roger"
nombre[0:2] #"Ro"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 40/119
8/3/23, 19:37 El Manual de Python
nombre[:2] #"Ro"
nombre[2:] #"ger"
Foro Donar
Booleanos en Python
Python proporciona el tipo bool , que puede tener dos valores: True
(Verdadero) y False (Falso) (capitalizado).
hecho = False
hecho = True
hecho = True
if hecho:
# Ejecuta algun codigo
else:
# Ejecuta algun otro codigo
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 41/119
8/3/23, 19:37 El Manual de Python
hecho = True
type(hecho) == bool #True
hecho = True
isinstance(hecho, bool) #True
libro_1_leido = True
libro_2_leido = False
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 42/119
8/3/23, 19:37 El Manual de Python
ingredientes_comprados = True
Foro Donar
comida_preparada = False
Support our charity and our mission. Donate to freeCodeCamp.org.
list_para_servir = all([ingredientes_comprados, comida_preparada])
#False
Números en Python
Los números en Python pueden ser de 3 tipos: int , float y complex .
edad = 8
edad = int(8)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 43/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Números flotantes en Python
Support our charity and our mission. Donate to freeCodeCamp.org.
fraccion = 0.1
fraccion = float(0.1)
numeroComplejo = 2+3j
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 44/119
8/3/23, 19:37 El Manual de Python
numeroComplejo = complex(2, 3)
Una vez que tengas un número complejo, puedes obtener su parte real
e imaginaria:
numeroComplejo.real #2.0
numeroComplejo.imag #3.0
1 + 1 #2
2 - 1 #1
2 * 2 #4
4 / 2 #2
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 45/119
8/3/23, 19:37 El Manual de Python
4 % 3 #1
4 ** 2 #16
Foro Donar
4 // 2 #2
Support our charity and our mission. Donate to freeCodeCamp.org.
+=
-=
*=
/=
%=
y así...
edad = 8
edad += 1
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 46/119
8/3/23, 19:37 El Manual de Python
round(0.12) #0
Foro Donar
round(0.12, 1) #0.1
Constantes en Python
Python no tiene forma de exigir que una variable sea una constante.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 47/119
8/3/23, 19:37 El Manual de Python
class Constantes(Enum):
Foro Donar
ANCHURA = 1024
Support our charity and our mission. Donate to freeCodeCamp.org.
ALTURA = 256
ANCHURA = 1024
Enums en Python
Los Enums son nombres legibles que están vinculados a un valor
constante.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 48/119
8/3/23, 19:37 El Manual de Python
class Estado(Enum):
INACTIVO = 0
ACTIVO = 1
print(Estado.ACTIVO)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 49/119
8/3/23, 19:37 El Manual de Python
Puedes contarlos:
len(Estado) # 2
nombre = "Roger"
print(nombre)
print('¿Cual es tu edad?')
edad = input()
print('Tu edad es ' + edad)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 50/119
8/3/23, 19:37 El Manual de Python
Declaraciones de control en
Python
Cuando se trata de valores booleanos y expresiones que devuelven un
valor booleano en particular, podemos tomar decisiones y diferentes
caminos en función de sus valores True o False .
condicion = True
if condicion == True:
# Hace algo
condicion = True
if condicion == True:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 51/119
8/3/23, 19:37 El Manual de Python
print("La condicion")
print("era VERDADERA")
Foro Donar
El bloque puede estar formado por una sola línea, o también por varias
líneas, y termina cuando regresa al nivel de indentación anterior:
condicion = True
if condicion == True:
print("La condicion")
print("era VERDADERA")
condicion = True
if condicion == True:
print("La condicion")
print("era VERDADERA")
else:
print("La condicion")
print("era FALSA")
condicion = True
nombre = "Roger"
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 52/119
8/3/23, 19:37 El Manual de Python
if condicion == True:
Foro Donar
print("La condicion")
Support our charity and our mission. Donate to freeCodeCamp.org.
print("era VERDADERA")
elif nombre == "Roger":
print("Hola Roger")
else:
print("La condicion")
print("era FALSA")
condicion = True
nombre = "Roger"
if condicion == True:
print("La condicion")
print("era VERDADERA")
elif nombre == "Roger":
print("Hola Roger")
elif nombre == "Syd":
print("Hola Syd")
elif nombre == "Flavio":
print("Hola Flavio")
else:
print("La condicion")
print("era FALSA")
Ejemplo:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 53/119
8/3/23, 19:37 El Manual de Python
Foro Donar
a = 2
Support our charity and our mission. Donate to freeCodeCamp.org.
resultado = 2 if a == 0 else 3
print(resultado) # 3
Listas en Python
Las listas son una estructura de datos esencial de Python.
Por ejemplo:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 54/119
8/3/23, 19:37 El Manual de Python
items = []
items[0] # "Roger"
items[1] # 1
items[3] # True
items[0] = "Roger"
items.index(0) # "Roger"
items.index(1) # 1
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 55/119
8/3/23, 19:37 El Manual de Python
items[-1] # True
Foro Donar
items[0:2] # ["Roger", 1]
items[2:] # ["Syd", True]
len(items) #4
items.append("Prueba")
o el método extend()
items.extend(["Prueba"])
Foro Donar
items += ["Prueba"]
Support our charity and our mission. Donate to freeCodeCamp.org.
# los items son ['Roger', 1, 'Syd', True, 'Prueba']
items.remove("Prueba")
#o
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 57/119
8/3/23, 19:37 El Manual de Python
items.insert("Prueba", 1)
Foro Donar
# agrega "Prueba" en el indice 1
Support our charity and our mission. Donate to freeCodeCamp.org.
items.sort()
items.sort(key=str.lower)
Foro Donar
copiaitems = items[:]
Support our charity and our mission. Donate to freeCodeCamp.org.
print(sorted(items, key=str.lower))
Tuplas en Python
Las tuplas son otra estructura de datos fundamental de Python.
Una tupla está ordenada, como una lista, por lo que puedes obtener
sus valores haciendo referencia a un valor de índice:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 59/119
8/3/23, 19:37 El Manual de Python
nombres[0] # "Roger"
Foro Donar
nombres[1] # "Syd"
Support our charity and our mission. Donate to freeCodeCamp.org.
nombres.index('Roger') # 0
nombres.index('Syd') # 1
Al igual que con las cadenas y las listas, el uso de un índice negativo
comenzará a buscar desde el final:
nombres[-1] # True
len(nombres) # 2
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 60/119
8/3/23, 19:37 El Manual de Python
sorted(nombres)
Diccionarios en Python
Los diccionarios son una estructura de datos de Python muy
importante.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 61/119
8/3/23, 19:37 El Manual de Python
Foro Donar
perro = { 'nombre': 'Roger' }
Support our charity and our mission. Donate to freeCodeCamp.org.
perro['nombre'] # 'Roger'
perro['edad'] # 8
perro['nombre'] = 'Syd'
Y otra forma es usar el método get() , que tiene una opción para
agregar un valor predeterminado:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 62/119
8/3/23, 19:37 El Manual de Python
perro.get('nombre') # 'Roger'
Foro Donar
perro.get('prueba', 'predeterminado') # 'predeterminado'
Support our charity and our mission. Donate to freeCodeCamp.org.
perro.pop('nombre') # 'Roger'
perro.popitem()
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 63/119
8/3/23, 19:37 El Manual de Python
print(list(perro.values()))
# ['Roger', 8]
print(list(perro.items()))
# [('nombre', 'Roger'), ('edad', 8)]
len(perro) #2
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 64/119
8/3/23, 19:37 El Manual de Python
perroCopia = perro.copy()
Conjuntos en Python
Los conjuntos(sets) son otra estructura de datos importante de
Python.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 65/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 66/119
8/3/23, 19:37 El Manual de Python
Funciones en Python
Una función nos permite crear un conjunto de instrucciones que
podemos ejecutar cuando sea necesario.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 67/119
8/3/23, 19:37 El Manual de Python
Aquí hay una función de ejemplo llamada hola que imprime "¡Hola!": Donar
Foro
Support our charity and our mission. Donate to freeCodeCamp.org.
def hola():
print('Hola!')
hola()
def hola(nombre):
print('Hola ' + nombre + '!')
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 68/119
8/3/23, 19:37 El Manual de Python
hola('Roger')
Foro Donar
hola()
# Hola mi amigo!
hola('Roger', 8)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 69/119
8/3/23, 19:37 El Manual de Python
def cambio(valor):
valor = 2
val = 1
cambio(val)
print(val) #1
def hola(nombre):
print('Hola ' + nombre + '!')
return nombre
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 70/119
8/3/23, 19:37 El Manual de Python
def hola(nombre):
Foro Donar
print('Hola ' + nombre + '!')
Support our charity and our mission. Donate to freeCodeCamp.org.
return
def hola(nombre):
if not nombre:
return
print('Hola ' + nombre + '!')
def hola(nombre):
print('Hola ' + nombre + '!')
return nombre, 'Roger', 8
Objetos en Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 71/119
8/3/23, 19:37 El Manual de Python
edad = 8
print(edad.real) # 8
print(edad.imag) # 0
print(edad.bit_length()) #4
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 72/119
8/3/23, 19:37 El Manual de Python
Foro Donar
items = [1, 2]
items.append(3)
Support our charity and our mission. Donate to freeCodeCamp.org.
items.pop()
id(edad) # 140170065725376
edad = 8
print(id(edad)) # 140535918671808
edad = 9
print(id(edad)) # 140535918671840
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 73/119
8/3/23, 19:37 El Manual de Python
Foro Donar
items = [1, 2]
Support our charity and our mission. Donate to freeCodeCamp.org.
print(id(items)) # 140093713593920
items.append(3)
print(items) # [1, 2, 3]
print(id(items)) # 140093713593920
edad = 8
edad = edad + 1
# o
edad += 1
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 74/119
8/3/23, 19:37 El Manual de Python
condicion = True
while condicion == True:
print("La condicion es verdadera")
condicion = True
while condicion == True:
print("La condicion es verdadera")
condicion = False
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 75/119
8/3/23, 19:37 El Manual de Python
contador = 0
while contador < 10:
print("La condicion es verdadera")
contador = contador + 1
items = [1, 2, 3, 4]
for item in items:
print(item)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 76/119
8/3/23, 19:37 El Manual de Python
items = [1, 2, 3, 4]
for indice, item in enumerate(items):
print(indice, item)
items = [1, 2, 3, 4]
for item in items:
if item == 2:
continue
print(item)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 77/119
8/3/23, 19:37 El Manual de Python
Foro Donar
items = [1, 2, 3, 4]
for item in items:
Support our charity and our mission. Donate to freeCodeCamp.org.
if item == 2:
break
print(item)
Clases en Python
Además de usar los tipos proporcionados por Python, podemos
declarar nuestras propias clases y, a partir de las clases, podemos
crear instancias de objetos.
class <nombre_clase>:
# mi clase
class Perro:
# la clase Perro
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 78/119
8/3/23, 19:37 El Manual de Python
class Perro:
Foro Donar
# la clase Perro
Support our charity and our mission. Donate to freeCodeCamp.org.
def ladrido(self):
print('Guau!')
roger = Perro()
Si ejecutas:
print(type(roger))
class Perro:
# la clase Perro
def __init__(self, nombre, edad):
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 79/119
8/3/23, 19:37 El Manual de Python
self.nombre = nombre
self.edad = edad
Foro Donar
roger = Perro('Roger', 8)
print(roger.nombre) # 'Roger'
print(roger.edad) # 8
roger.ladrido() # 'Guau!'
class Animal:
def caminar(self):
print('Caminando..')
class Perro(Animal):
def ladrido(self):
print('Guau!')
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 80/119
8/3/23, 19:37 El Manual de Python
roger = Perro()
roger.caminar() # 'Caminando..'
roger.ladrido() # 'Guau!'
Módulos en Python
Cada archivo de Python es un módulo.
def ladrido():
print('Guau!')
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 81/119
8/3/23, 19:37 El Manual de Python
import perro
Foro Donar
ladrido()
perro.ladrido()
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 82/119
8/3/23, 19:37 El Manual de Python
ladrido()
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 83/119
8/3/23, 19:37 El Manual de Python
requests para
Support our realizar
charity solicitudes
and our de red HTTP
mission. Donate to freeCodeCamp.org.
import math
math.sqrt(4) # 2.0
sqrt(4) # 2.0
Python define sus convenciones en la guía de estilo PEP8. PEP son las
siglas de Python Enhancement Proposals y es el lugar donde ocurren
todas las mejoras y discusiones del lenguaje Python.
Depurando en Python
La depuración es una de las mejores habilidades que puedes aprender,
ya que te ayudará en muchas situaciones difíciles.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 86/119
8/3/23, 19:37 El Manual de Python
breakpoint()
Foro Donar
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 87/119
8/3/23, 19:37 El Manual de Python
Support
Cuando our charity
declaras and our mission.
una variable, Donate
esa variable es to freeCodeCamp.org.
visible en partes de tu
programa, dependiendo de dónde la declares.
edad = 8
def prueba():
print(edad)
print(edad) # 8
prueba() # 8
def prueba():
edad = 8
print(edad)
prueba() # 8
print(edad)
# # # NameError: name 'edad' is not defined
# Error: el nombre 'edad' no está definido
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 88/119
8/3/23, 19:37 El Manual de Python
Foro Donar
Cómo aceptar argumentos desde
Support our charity and our mission. Donate to freeCodeCamp.org.
la línea de comandos en Python
Python ofrece varias formas de manejar los argumentos pasados
cuando invocamos el programa desde la línea de comandos.
python <nombre_de_archivo>.py
import sys
print(len(sys.argv))
print(sys.argv)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 89/119
8/3/23, 19:37 El Manual de Python
Es una forma sencilla, pero tienes mucho trabajo por hacer. Debes
validar los argumentos, asegurarte de que su tipo sea correcto y debes
imprimir comentarios al usuario si no está usando el programa
correctamente.
import argparse
parser = argparse.ArgumentParser(
description='Este programa imprime los nombres de mis perros'
)
import argparse
parser = argparse.ArgumentParser(
description='Este programa imprime un valor de color HEX'
)
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 90/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 91/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 92/119
8/3/23, 19:37 El Manual de Python
lambda a, b : a * b
Foro Donar
multiplicar = lambda a, b : a * b
print(multiplicar(2, 2)) # 4
Recursión en Python
Una función en Python puede llamarse a sí misma. Eso es la
recursividad. Y puede ser bastante útil en muchos escenarios.
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 93/119
8/3/23, 19:37 El Manual de Python
def factorial(n):
if n == 1: return 1
return n * factorial(n-1)
print(factorial(3)) # 6
print(factorial(4)) # 24
print(factorial(5)) # 120
Esto es conveniente para crear utilidades que sean útiles para una
función, pero no útiles fuera de ella.
def hablar(frase):
def decir(palabra):
print(palabra)
def conteo():
conteo = 0
def incrementar():
nonlocal conteo
conteo = conteo + 1
print(conteo)
incrementar()
conteo()
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 95/119
8/3/23, 19:37 El Manual de Python
Closures en Python
Si devuelves una función anidada de una función, esa función anidada
tiene acceso a las variables definidas en esa función, incluso si esa
función ya no está activa.
def contador():
conteo = 0
def incrementar():
nonlocal conteo
conteo = conteo + 1
return conteo
return incrementar
incrementar = contador()
print(incrementar()) # 1
print(incrementar()) # 2
print(incrementar()) # 3
Decoradores en Python
Los decoradores son una forma de cambiar, mejorar o alterar de
cualquier forma el funcionamiento de una función.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 96/119
8/3/23, 19:37 El Manual de Python
Ejemplo:
@registro
def hola():
print('¡hola!')
def registro(func):
def envoltura():
# hace algo antes
val = func()
# hace algo después
return val
return envoltura
Docstrings en Python
La documentación es muy importante, no solo para comunicar a otras
personas cuál es el objetivo de una función / clase / método / módulo,
sino que también te lo comunicas a ti mismo.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 97/119
8/3/23, 19:37 El Manual de Python
# esto es un comentario
def incrementar(n):
"""Incrementa un numero"""
return n + 1
class Perro:
"""Una clase que representa un perro"""
def __init__(self, nombre, edad):
"""Inicializar un nuevo perro"""
self.nombre = nombre
self.edad = edad
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 98/119
8/3/23, 19:37 El Manual de Python
def ladrido(self):
Foro Donar
"""Permite ladrar al perro"""
Support our charity and our mission. Donate to freeCodeCamp.org.
print('WOF!')
"""Modulo Perro
Este modulo hace ... bla bla bla y provee las siguientes clases:
- Perro
...
"""
class Perro:
"""Una clase que representa un perro"""
def __init__(self, nombre, edad):
"""Inicializar un nuevo perro"""
self.nombre = nombre
self.edad = edad
def ladrido(self):
"""Permite ladrar al perro"""
print('WOF!')
def incrementar(n):
"""Incrementa
un numero
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 99/119
8/3/23, 19:37 El Manual de Python
"""
return n + 1
Foro Donar
incrementar(n)
Incrementa
un número
Introspección en Python
Las funciones, variables y objetos se pueden analizar mediante la
introspección.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 100/119
8/3/23, 19:37 El Manual de Python
def incrementar(n):
return n + 1
print(incrementar)
o un objeto:
class Perro():
def ladrido(self):
print('WOF!')
roger = Perro()
print(roger)
print(type(incrementar))
# <class 'function'>
print(type(roger))
# <class '__main__.Perro'>
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 101/119
8/3/23, 19:37 El Manual de Python
print(type(1))
Foro Donar
# <class 'int'>
Support our charity and our mission. Donate to freeCodeCamp.org.
print(type('test'))
# <class 'str'>
print(dir(roger))
print(id(roger)) # 140227518093024
print(id(1)) # 140227521172384
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 102/119
8/3/23, 19:37 El Manual de Python
Support
Python our charity
se escribe and our mission.
dinámicamente. No Donate toque
tenemos freeCodeCamp.org.
especificar el tipo
de una variable o parámetro de función, o un valor de retorno de
función.
def incrementar(n):
return n + 1
conteo: int = 0
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 103/119
8/3/23, 19:37 El Manual de Python
Excepciones en Python
Es importante tener una forma de manejar los errores, y Python nos
brinda un manejo de excepciones para hacerlo.
try:
# algunas lineas de codigo
try:
# algunas lineas de codigo
except <ERROR1>:
# manejo de <ERROR1>
except <ERROR2>:
# manejo de <ERROR2>
Para atrapar a todas las excepciones, puedes usar except sin ningún
tipo de error:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 104/119
8/3/23, 19:37 El Manual de Python
try:
Foro Donar
# algunas lineas de codigo
Support our charity and our mission. Donate to freeCodeCamp.org.
except <ERROR1>:
# manejo de <ERROR1>
except:
# atrapar todas las demas excepciones
try:
# algunas lineas de codigo
except <ERROR1>:
# manejo de <ERROR1>
except <ERROR2>:
# manejo de <ERROR2>
else:
# no surgieron excepciones, el codigo se ejecuto correctamente
try:
# algunas lineas de codigo
except <ERROR1>:
# manejo de <ERROR1>
except <ERROR2>:
# manejo de <ERROR2>
else:
# no surgieron excepciones, el codigo se ejecuto correctamente
finally:
# hacer algo de todos modos
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 105/119
8/3/23, 19:37 El Manual de Python
resultado = 2 / 0
print(resultado)
Foro Donar
try:
Support our charity and our mission. Donate to freeCodeCamp.org.
resultado = 2 / 0
except ZeroDivisionError:
print('No se puede dividir por cero!')
finally:
resultado = 1
print(resultado) # 1
try:
raise Exception('Ha ocurrido un error!')
except Exception as error:
print(error)
class PerroNoEncontradoExcepcion(Exception):
pass
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 107/119
8/3/23, 19:37 El Manual de Python
try:
raise PerroNoEncontradoExcepcion()
except PerroNoEncontradoExcepcion:
print('Perro no encontrado!')
Por ejemplo, cuando trabajamos con archivos, cada vez que abrimos
un archivo, debemos recordar cerrarlo.
En lugar de escribir:
nombre = '/Users/flavio/prueba.txt'
try:
archivo = open(nombre, 'r')
contenido = archivo.read()
print(contenido)
finally:
archivo.close()
Puedes escribir:
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 108/119
8/3/23, 19:37 El Manual de Python
Foro Donar
nombre = '/Users/flavio/prueba.txt'
Support our charity and our mission. Donate to freeCodeCamp.org.
with open(nombre, 'r') as archivo:
contenido = archivo.read()
print(contenido)
Es por eso que las personas y las empresas crean paquetes y los ponen
a disposición como software de código abierto para toda la
comunidad.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 109/119
8/3/23, 19:37 El Manual de Python
y una vez que lo hagas, estará disponible para todos tus scripts de
Python, porque los paquetes se instalan globalmente.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 110/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 111/119
8/3/23, 19:37 El Manual de Python
Foro Donar
numeros = [1, 2, 3, 4, 5]
Support our charity and our mission. Donate to freeCodeCamp.org.
numeros_elevados_a_2 = []
for n in numeros:
numeros_elevados_a_2.append(n**2)
y sobre map() :
Polimorfismo en Python
El polimorfismo generaliza una funcionalidad para que pueda
funcionar en diferentes tipos. Es un concepto importante en la
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 112/119
8/3/23, 19:37 El Manual de Python
class Perro:
def comer():
print('Comiendo comida de perro')
class Gato:
def comer():
print('Comiendo comida de gato')
animal1 = Perro()
animal2 = Gato()
animal1.comer()
animal2.comer()
Sobrecarga de operador en
Python
La sobrecarga de operadores es una técnica avanzada que podemos
utilizar para hacer que las clases sean comparables y que funcionen
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 113/119
8/3/23, 19:37 El Manual de Python
class Perro:
# la clase Perro
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
roger = Perro('Roger', 8)
syd = Perro('Syd', 7)
class Perro:
# la clase Perro
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def __gt__(self, otro):
return True if self.edad > otro.age else False
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 114/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 115/119
8/3/23, 19:37 El Manual de Python
Entonces ejecuta
source .venv/bin/activate
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 116/119
8/3/23, 19:37 El Manual de Python
El mío cambió de
➜ carpeta
(.venv) ➜ carpeta
Conclusión
Muchas gracias por leer este libro.
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 117/119
8/3/23, 19:37 El Manual de Python
Cristian Sulbaran
Desarrollador Web ReactJS & Laravel | Venezolano en Argentina 🇻🇪🇦🇷 IG |
TW @cristiansulbar
Nuestra misión: ayudar a las personas a aprender a programar de forma gratuita. Logramos esto
mediante la creación de miles de videos, artículos y lecciones de programación interactivas, todo
disponibles gratuitamente para el público. También tenemos miles de grupos de estudio de
FreeCodeCamp alrededor el mundo.
Las donaciones a freeCodeCamp van dirigidas a nuestras iniciativas educativas y ayudan a pagar
servidores, servicios y personal.
Guías de tendencias
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 118/119
8/3/23, 19:37 El Manual de Python
https://www.freecodecamp.org/espanol/news/el-manual-de-python/ 119/119