# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: ambienteML
#     language: python
#     name: ambienteml
# ---

# Una característica de Python que lo hace útil para una amplia gama de tareas es el hecho de que viene con "paquetes incluidos", es decir, la biblioteca estándar de Python contiene herramientas útiles para una amplia gama de tareas.
#
# Además de esto, existe un amplio ecosistema de herramientas y paquetes de terceros que ofrecen una funcionalidad más especializada. Aquí echaremos un vistazo a la importación de módulos de biblioteca estándar, herramientas para instalar módulos de terceros y una descripción de cómo puede crear sus propios módulos.
#
#

# #### Cargando módulos: la declaración import
#
# Para cargar módulos integrados y de terceros, Python proporciona la declaración import. Hay algunas formas de usar la declaración, que mencionaremos brevemente aquí, desde la más recomendada hasta la menos recomendada.

# #### Importación explícita de módulos 
# La importación explícita de un módulo conserva el contenido del módulo en un espacio de nombres. El espacio de nombres se utiliza para referirse a su contenido con un " ." entre ellos. Por ejemplo, aquí importaremos el módulo math integrado y calcularemos el coseno de pi:

import math
math.cos(math.pi)

help(math)

pow(2,3)

max([2,5,10])

argmax([2,5,10])

# #### Importación explícita de módulos por alias 
# Para nombres de módulo más largos, no es conveniente usar el nombre completo del módulo cada vez que accede a algún elemento. Por esta razón, usaremos comúnmente el import ... as ...patrón " " para crear un alias más corto para el espacio de nombres. Por ejemplo, el paquete NumPy (Python numérico), un paquete de terceros popular y útil para la ciencia de datos, se importa por convención bajo el alias np:

import numpy as np
np.cos(np.pi)

# #### Importación explícita del contenido del módulo 
# A veces, en lugar de importar el espacio de nombres del módulo, solo le gustaría importar algunos elementos particulares del módulo. Esto se puede hacer con el from ... import ...patrón " ". Por ejemplo, podemos importar solo la función cos y la constante pi del módulo math:

from math import cos, pi
cos(pi)

# #### Importación implícita del contenido del módulo 
# Finalmente, a veces es útil importar la totalidad del contenido del módulo al espacio de nombres local. Esto se puede hacer con el from ... import *patrón " ":

from math import *
sin(pi) ** 2 + cos(pi) ** 2

# **Este patrón debe usarse con moderación, si es que se usa. El problema es que dichas importaciones a veces pueden sobrescribir nombres de funciones que no se pretende sobrescribir, y lo implícito de la declaración dificulta determinar qué ha cambiado.**
#
# Por ejemplo, Python tiene una función sum incorporada que se puede usar para varias operaciones:

help(sum)

# Podemos usar esto para calcular la suma de una secuencia, comenzando con un cierto valor (aquí, comenzaremos con -1):

sum(range(5),-1)

# Ahora observe lo que sucede si hacemos exactamente la misma llamada de función después de importar *desde numpy:

from numpy import*

sum(range(5), -1)

# **¡El resultado es uno! La razón de esto es que la declaración import * reemplaza la función sum incorporada con la función numpy.sum, que tiene una firma de llamada diferente: en la primera, estamos sumando range(5)comenzando en -1; en el último, estamos sumando range(5)  a lo largo del último eje (indicado por -1).**
#
# Este es el tipo de situación que puede surgir si no se tiene cuidado al usar " import *"; por esta razón, es mejor evitarlo a menos que sepa exactamente lo que está haciendo.

# #### Importar desde la biblioteca estándar de Python 
# La biblioteca estándar de Python contiene muchos módulos incorporados útiles, sobre los cuales puede leer completamente en la documentación de Python . Cualquiera de estos se puede importar con la declaración import y luego explorar usando la función de ayuda que se vio en la sección anterior. Aquí hay una lista extremadamente incompleta de algunos de los módulos que quizás desee explorar y conocer:
#
# **os y sys**: herramientas para interactuar con el sistema operativo, incluida la navegación por estructuras de directorios de archivos y la ejecución de comandos de shell
#
# **math y cmath**: Funciones y operaciones matemáticas con números reales y complejos.
#
# **itertools**: Herramientas para construir e interactuar con iteradores y generadores.
#
# **functools**: Herramientas que ayudan con la programación funcional
#
# **random**: Herramientas para generar números pseudoaleatorios
#
# **pickle**: Herramientas para la persistencia de objetos: guardar y cargar objetos en el disco
#
# **json y csv**: Herramientas para leer archivos con formato JSON y CSV.
#
# **urllib**: Herramientas para realizar HTTP y otras solicitudes web.
#
# Puede encontrar información sobre estos y muchos más en la documentación de la biblioteca estándar de Python: https://docs.python.org/3/library/ .

StarcoderdataJupyterScriptsDedupFiltered