Existe una manera de saber qué paquetes se encuentran instalados en el entorno/ambiente actual, sin salir del cuaderno.
Basta con colocar !comando_deseado
en una celda de código.
Ejemplo:
Verifiquemos la versión de Python que estamos usando, qué entornos/ambientes tenemos disponibles, cuál es el que se encuentra activo y qué paquetes están instalados en dicho entorno, todo esto sin salir del cuaderno.
# Versión de python que se está utilizando
!python --version
# Entornos disponibles
!conda env list
# Paquetes instalados en el entorno activo
!conda list
¿Qué es un módulo?
Un módulo es un archivo que tiene extensión .py, es decir, es un archivo de texto que tiene adentro código de python que se puede ejecutar. Un módulo puede definir funciones, clases y variables.
Cabe resaltar lo siguiente: Python es un lenguaje de programación orientado a objetos.
Para términos de visualización, imagínese una caja que tiene muchas cajas por dentro y dentro de cada caja existen herramientas de trabajo distintas.
Ejemplo:
Mi maleta. Mi maleta tiene dentro lo siguiente:
Los roles serían los siguientes:
Entonces, si queremos usar la cartuchera, debemos primero abrir la maleta y tomarla.
O sea, del paquete, vamos a usar un módulo.
Dentro de la cartuchera tengo marcadores, lápices, y borrador.
Estos toman el rol de atributos, objetos que hacen tareas específicas.
Por tanto, si quiero usar un borrador, debería hacer lo siguiente
Abrir maleta $\rightarrow$ Tomar cartuchera $\rightarrow$ Abrir Cartuchera $\rightarrow$ Tomar Borrador
En Python, estas acciones se pueden traducir a lo siguiente:
import Maleta
Maleta.Cartuchera.Borrador()
Para saber qué módulos están disponibles en el ambiente de trabajo, basta con usar el siguiente comando:
help("modules")
Parece que es una lista bastante larga...
Veamos alguna documentación de alguno de los módulos y sus atributos.
Por ejemplo random.
#help("random") # Muestra toda la documentación
import random
#?random # Muestra una pequeña documentación
Para acceder a los atributos del mósulo, basta colocar dir(modulo)
dir(random)
Vaya que la lista sigue siendo larga...
Sigamos metiendo dentro de cada cosa (algún día llegaremos al fin...no?)
?random.random
Bingo! Al fin algo que podemos usar:
x = random.random()
print("Número aleatorio en [0,1]: ",x)
?random.randint
y=random.randint(3,6)
print("Número entero aleatorio entre 3 y 6: ",y)
Otra propiedad genial de Python es su capacidad para reducir la cantidad de código escrito usando unos secretos milenarios: aliases.
Por ejemplo, si me llamo Daniel, mi alias puede ser Dani.
Entonces, acada vez que me digan Dani, yo miraré en respuesta.
Traducir a Python luce así:
import modulo as alias
Ejemplo:
import math as m
# Una vez nombrado el alias, siempre se debe referir a ese alias y no al nombre principal
#dir(math) genera error
dir(m)
Una pequeña aplicación de Matemáticas:
Área de una circunferencia de radio r:
$A = \pi r²$
# Aplicación: Área de un círculo de radio 10 cm
r = 10; # Declarar el radio
z = m.pi*(r**2) # Escribir la fórmula matemática
print("El Área del círculo es: ",z,"cm²")
Como pueden observar, los módulos son el alma de Python.
# You Must Reset Kernel 0,0
from math import pi
A = pi*r**2
print(A)
math.pi
Usando un módulo llamado turtle
podemos crear un árbolito bonito.
import turtle
def tree(length,n):
if length < (length/n):
return
turtle.forward(length)
turtle.left(45)
tree(length * 0.5,length/n)
turtle.left(20)
tree(length * 0.5,length/n)
turtle.right(75)
tree(length * 0.5,length/n)
turtle.right(20)
tree(length * 0.5,length/n)
turtle.left(30)
turtle.backward(length)
return
turtle.left(90)
turtle.backward(30)
tree(200,4)
Y también formas que tienen forma de pedazos de copitos de nieve (Koch Curve):
from turtle import *
def Recursive_Koch(length, depth):
if depth == 0:
forward(length)
else:
Recursive_Koch(length, depth-1)
right(60)
Recursive_Koch(length, depth-1)
left(120)
#Recursive_Koch(length, depth-1)
Recursive_Koch(length, depth-1)
right(60)
Recursive_Koch(length, depth-1)
# ----------
Recursive_Koch(3, 6)