Introducci贸n

1

El Zen de Python

Conjuntos

2

Sets

3

Modificando conjuntos

4

Operaciones con conjuntos

5

Playgrounds: Elimina elementos duplicados usando conjuntos

Comprehensions

6

List Comprehension

7

Dictionary Comprehension

8

Dictionary Comprehension: condition

9

Playgrounds: Crea una lista usando List Comprehension

10

Lists vs. Tuples vs. Sets

Funciones

11

Funciones

12

Funciones: return

13

Par谩metros por defecto y m煤ltiples returns

14

El scope

15

Refactor game

16

Playgrounds: Tienda de Tecnolog铆a

17

Funciones an贸nimas: lambda

18

Higher order function: una funci贸n dentro de otra funci贸n

19

Map

20

Map con diccionarios

21

Reto: map con inmutabilidad

22

Playgrounds: Multiplica todos los elementos por dos

23

Filter

24

Playgrounds: Retorna solo palabras de 4 letras y m谩s

25

Reduce

M贸dulos

26

M贸dulos

27

Mis propios m贸dulos

28

M贸dulos como scripts: __name__ y __main__

29

Paquetes

30

Playgrounds: Calcular la suma de todas las compras

Manipulaci贸n de archivos y errores

31

Iterables

32

Errores en Python

33

Manejo de excepciones

34

Playgrounds: Captura la excepci贸n: ZeroDivisionError

35

Leer un archivo de texto

36

Escribir en un archivo

37

Leer un CSV

38

Playgrounds: Lee un CSV para calcular el total de gastos

Gr谩ficas en Python

39

Creando una gr谩fica

40

Reto: graficando la poblaci贸n de un pa铆s

41

Reto: graficando la poblaci贸n mundial

Pr贸ximos pasos

42

隆Conoce otros proyectos de este curso!

43

Reconoce tu proceso y certif铆cate

44

Toma el Curso de PIP y Entornos Virtuales con Python

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Mis propios m贸dulos

27/44
Recursos

Aportes 57

Preguntas 20

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Tambi茅n podemos acceder a un m茅todo o funci贸n espec铆fica espec铆fico con:

from utils2 import population_by_country
from otherutils.utils3 import Person

Encantado con los m贸dulos, gran paso a hacer POO.

M贸dulos propios

Los m贸dulos en python son cualquier archivo que termine en .py

# utils.py
def get_population():
	keys = ['col','bol']
	values = [300,400]
	return keys,values

def population_by_country(data, country):
	result = list(filter(lambda item: item['Country'] == country,data))
	return result

# main.py
import utils

keys,values = utils.get_population()
print(keys,values) # ['col','bol'] [300,400]

data = [{
	'Country': 'Colombia',
	'Population': 500
},
{
	'Country': 'Bolivia',
	'Population': 300
}
]

country = input('Type Country => ')

result = utils.population_by_country(data, country)
print(result) 聽# [{'Country': 'Colombia','Population': 500}]

print(utils.A)

Otro dato interesante es que pueden renombrar un m贸dulo dentro del c贸digo para cuando lo usen usar una abreviaci贸n con as

import moduloconnombrelargo as m

m.funci贸n()  //Esto es igual a poner moduloconnombrelargo.funci贸n()

Como Construir M贸dulos.

Para construir m贸dulos debemos tener en cuenta que se deben crear en la misma carpeta a lo cual utilizaremos import para ser llamada en el archivo a trabajar:

Tenemos un m贸dulo que tiene los datos de la poblaci贸n de 3 paises de Sur America, los cualse vamos a crear en la carpeta app y daremos por nombre utils.py

def get_population():
  keys = ['Colombia', 'Peru', 'Argentina']
  values = [500, 250, 350]
  return keys, values

def population_by_countrie(data, country): 
  result = list(filter(lambda item: item['country'] == country, data))
  return result

Ahora creamos el archivo con nombre main.py, este archivo vamos a digitar los datos a buscar.

import utils

keys, values = utils.get_population()
print(keys, values)

data = [
  {
    'country': 'Colombia',
    'Population': 500
  },
  {
    'country': 'Peru',
    'Population': 250
  },
  {
    'country': 'Argentina',
    'Population': 350
  }
]

Ahora invocamos el m贸dulo a utilizar y sus valores seg煤n lo que contiene
country = input('Digite el pa铆s: ')
result = utils.population_by_countrie(data, country)
print(result)

Producci贸n:

Digite el pa铆s: Peru
[{'country': 'Peru', 'Population': 250}]
Digite el pa铆s: Colombia
[{'country': 'Colombia', 'Population': 500}]
Digite el pa铆s: Argentina
[{'country': 'Argentina', 'Population': 350}]

para evitar errores de inputs por el usuario, si ponen los pa铆ses con la primer letra may煤scula, usen capitalize, ac谩 les va mi ejemplo:

country = input('Type country: ')
country = country.capitalize()
result = utils.population_by_country(data, country)
print(result)

Esta clase fue MAGNIFICA.
鈥淢e atrapaste, esto si es cine鈥

La verdad muy buena forma de introducir el tema de POO sin hablar de POO jajaja muy sutil 鉂わ笍

Para importar de otra carpeta:

  1. import sys
  2. sys.path.insert(0, 鈥/the/folder/path/name-package/鈥)
    Poner ruta de modulo .py
  3. from name-package import name-module

Esta clase est谩 presentando fallas, se pausa demasiado y en la app ni siquiera carga.

Una de las Mejores clases鈥 Que gran utilidad son los modulos!

Hola, deseando que te encuentres bien. si eres curioso dos cosas durante el min 5:00 en adelante.

  1. no usamos la palabra from para importar un modulo sino que directamente usamos import, y esto porque?.
    la razon es porque vamos a importar elementos especificos de un directorio.
    recuerda que los modulos siempre van a estar dentro de una carpeta(repositorio) que es necesario acceder para poder hacer uso de sus componentes.
    entonces from es solo una clausula de especificacion a el uso de un modulo.
  2. Todo lo que escribas en python es un objeto, esto que significa?
    si tu tienes un objeto que puedes hacer con el?
    manipularlo, da帽arlo, tirarlo, obviarlo, pero el hecho es que tu sabes que existe y que puedes hacer uso del mismo.
    y la pregunta que debes hacerte, que no es un objeto?
    la respuesta es: cualquier cosa que tu no puedas manipular por ejemplo, una concepto, algo abstracto.
    entonces, en PYTHON tu puedes manipular desde el dato mas basico hasta el dato mas complejo, como tambien las funciones.

Hola, para los que estamos trabajando con Google Colab y queramos hacerlo parecido ac谩 dejo un enlace a un video que hice para compartir los modulos entre los libros de Google Colab:
Enlace al video https://www.youtube.com/watch?v=jzOx_1XH9uw
馃憤

隆IMPORTANTE!!
RECARGA DE M脫DULO

Esto me paso mientras practicaba esta clase, espero les sea de ayuda:

驴Qu茅 pasa si despu茅s de importar un m贸dulo, realizo un cambio en 茅ste?

El problema que est谩s experimentando, donde los cambios realizados en el m贸dulo utils.py no se reconocen despu茅s de su importaci贸n en main.py, se debe a c贸mo Python administra los m贸dulos importados.

  • Cuando importas un m贸dulo en Python, el m贸dulo se carga y se ejecuta una vez, y luego se almacena en la memoria. Los objetos definidos en ese m贸dulo, como variables, funciones y clases, se almacenan en la memoria en ese estado espec铆fico.

  • Si realizas cambios en el m贸dulo utils.py despu茅s de importarlo en main.py, esos cambios no se reflejar谩n autom谩ticamente en el m贸dulo importado. Python utiliza una especie de cach茅 para mejorar el rendimiento y la eficiencia de la importaci贸n de m贸dulos.

Para que los cambios en utils.py se reflejen en main.py, debes recargar el m贸dulo importado.

  • Puedes hacerlo utilizando la funci贸n reload del m贸dulo importlib, que es parte de la biblioteca est谩ndar de Python. Aqu铆 hay un ejemplo de c贸mo hacerlo:
import importlib

# Importa el m贸dulo utils
import utils

# Realiza cambios en el m贸dulo utils.py

# Recarga el m贸dulo importado para reflejar los cambios
importlib.reload(utils)

# Ahora los cambios en utils.py deber铆an estar disponibles

Ten en cuenta que recargar m贸dulos de esta manera puede ser 煤til durante el desarrollo, pero es importante tener cuidado al usarlo en producci贸n, ya que puede tener efectos inesperados en la consistencia del estado de tu programa.

  • 驴Qu茅 pasa si vuelvo hacer modificaciones en el m贸dulo importado?

La funci贸n importlib.reload recargar谩 el m贸dulo una vez, pero no estar谩 鈥渧igilando鈥 continuamente los cambios en el m贸dulo utils.py. Por lo tanto, si realizas un nuevo cambio en utils.py despu茅s de haber utilizado importlib.reload, ese cambio no se reflejar谩 autom谩ticamente en el m贸dulo importado en main.py.

  • Si deseas que los cambios se reflejen cada vez que modificas utils.py, tendr谩s que volver a ejecutar importlib.reload(utils) en main.py despu茅s de cada cambio en utils.py. Esto significa que tendr谩s que ejecutar manualmente la recarga cada vez que realices una modificaci贸n.

En resumen, la recarga con importlib.reload es una operaci贸n que debes realizar manualmente cada vez que quieras que los cambios en utils.py se reflejen en main.py. No es una recarga autom谩tica que se produzca cada vez que se realiza un cambio en utils.py.

驴En qu茅 momento y d贸nde realizo la importaci贸n de importlib?

Puedes realizar la importaci贸n y la recarga del m贸dulo en la parte donde vas a utilizar los cambios realizados en utils.py. Esto es una pr谩ctica com煤n durante el desarrollo, ya que te permite controlar cu谩ndo y d贸nde se reflejan los cambios en el m贸dulo.

Por ejemplo, puedes hacer lo siguiente en main.py:

# Importa el m贸dulo utils
import utils

# Realiza cambios en el m贸dulo utils.py

# En el punto donde necesitas los cambios, realiza la recarga del m贸dulo
import importlib
importlib.reload(utils)

# Ahora los cambios en utils.py deber铆an estar disponibles en este punto

De esta manera, puedes importar y recargar el m贸dulo utils en el lugar exacto donde necesitas los cambios, lo que te brinda un mayor control sobre cu谩ndo se aplican los cambios en tu programa.

Recuerda que, para que los cambios sean visibles, debes realizar la recarga del m贸dulo en cada parte de tu c贸digo donde lo hayas importado y deseas utilizar los cambios.

OTRAS FORMAS (REINICIAR EL IDE)

S铆, otra forma de asegurarte de que los cambios en un m贸dulo sean reflejados es reiniciar el IDE (entorno de desarrollo integrado) en el que est谩s trabajando. Al reiniciar el IDE, se volver谩n a cargar todos los m贸dulos y archivos, lo que incluir谩 cualquier cambio realizado en utils.py.

Sin embargo, reiniciar el IDE puede ser un proceso m谩s dr谩stico que la recarga manual de un m贸dulo utilizando importlib.reload. Al reiniciar, tambi茅n perder谩s cualquier estado de ejecuci贸n actual y tendr谩s que volver a abrir los archivos y volver a ejecutar el c贸digo que estabas probando. Por lo tanto, si solo necesitas actualizar un m贸dulo espec铆fico y no quieres afectar todo el estado de tu IDE, la recarga manual del m贸dulo es una opci贸n m谩s controlada y eficiente.

recuerda que modular tu programa siempre es una buena idea, porque pueden haber errores ( nunca faltaran) y es bueno que tengas separado el codigo para atacar directamente el problema y no revisar el codigo durante horas para encontrar un error.馃槉

Yo ya hab铆a implementado esto para empezar a crearme una suerte de 鈥渉oja maestra鈥 para data science, en donde metia en mi archivo .py las funciones mas utilizadas, y la voy a ir actualizando, es una buena practica y aca les dejo como viene hasta ahora la hoja, al importar este archivo ya no tendran un sinfin de imports en el principio del notebook

import inspect
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report


def split_data(x, y, test_size, random_state=22):
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test_size, random_state=random_state)
    return x_train, x_test, y_train, y_test


def train_predict(model, x_train, y_train, x_test, y_test):
    model.fit(x_train, y_train)
    y_pred = model.predict(x_test)
    accuracy = accuracy_score(y_test, y_pred)
    print(f'Accuracy; {accuracy}')
    return y_pred, accuracy


def get_accuracy(y_test, y_pred):
    accuracy = accuracy_score(y_test, y_pred)
    return accuracy


def plot_confusion_matrix(y_test, y_pred, classes):
    cm = confusion_matrix(y_test, y_pred)
    fig, ax = plt.subplots()
    cax = ax.matshow(cm, cmap='Blues')
    plt.title('Confusion Matrix')
    fig.colorbar(cax)
    ax.set_xticklabels([''] + classes)
    ax.set_yticklabels([''] + classes)
    plt.xlabel('Predicted')
    plt.ylabel('True')
    plt.show()


def print_results(y_test, y_pred):
    print(classification_report(y_test, y_pred))

Al momento de crear nuestros m茅todos es buena practica asignarles un Doctring informando la funcionalidad, tipos de datos que recibe y los valores que retorna:

def population_by_country(data, country):
    """Function to look up country in a list of dictionaries

    Args:
        data (lis): list of dictionaries
        country (string): matching country

    Returns:
        Dict: Country
    """
    result = list(filter(lambda item: item["Country"] == country, data))
    return result

En Visual Studio Code la extensi贸n Python docstring generator, permite generar el docstring de forma automatica

Link: https://github.com/NilsJPWerner/autoDocstring

Para conocer el docstring de un metodo desde el archivo main podemos utilizar la funci贸n help():

print(help(utils.population_by_country))
este video esta ca铆do no?

Si quedaste con muchas dudas sobre esta clase, te comparto una que te puede ayudar a entender los conceptos basicos de la programacion orientada a objetos:
https://platzi.com/cursos/poo-python/

Modulos en python

  • Son archivos que contienen c贸digo Python que se puede reutilizar en otros programas.
  • Estos archivos suelen contener funciones, clases y variables que se pueden importar a otros programas para utilizarlas en ellos.
  • La ventaja de utilizar m贸dulos es que permite separar el c贸digo en partes m谩s peque帽as y organizadas, lo que facilita la lectura y mantenimiento del c贸digo.
  • Los m贸dulos pueden ser compartidos y utilizados por otros programadores, lo que puede ahorrar tiempo y esfuerzo en la programaci贸n.
  • Entonces, los m贸dulos en Python son archivos que contienen c贸digo que se puede importar y utilizar en otros programas para ahorrar tiempo y mantener un c贸digo organizado.

Tal vez alguien m谩s se pregunt贸 :

驴cu谩l es la diferencia al usar import module vs from module import function?

la respuesta est谩 en la memoria que utiliza, es m谩s eficiente hacer el llamado con from module que llamando completamente todo el module, puesto que este segundo requiere mayor esfuerzo al llamado.

Me acuerdo que en el anterior curso de Python que di贸 Facundo, comenz贸 de lleno con el modulo main desde la primera clase, pero no explicaba a fondo qu茅 era . Me gusta m谩s la forma de ense帽ar de Nicolas por qu茅 siento que explic贸 paso a paso hasta llegar a los m贸dulos y explicar de d贸nde salen y como podemos hacerlos. Genial. 馃挌

Hice algo interesante!, utilic茅

country = input('Put a Country -> ').capitalize()

para que me acepte palabras ya sean may煤sculas o minusculas

Una Buena Practica que muy probablemente veremos mas adelante sera definir el nombre de las funciones con set y get.

Ejemplo
def set_population():
keys = [鈥渃ol鈥,鈥渧en鈥漖
values = [鈥10鈥,鈥20鈥漖
def get_population():
return keys, values

As铆 entonces es como se van creando las apis?

Hola a todos. Alguien me podr铆a ayudar? Yo he hecho todo el curso en Visual Code, pero a la hora de ejecutar los m贸dulos, no s茅 como llamarlos. Adem谩s que organice el curso en diferentes archivos (nombres) y carpetas. Les comparto como lo tengo de momento; si alguien me pudiera apoyar se lo agradecer铆a, ya que siento que me estoy quedando detenido a esta altura del curso, y apenas viene lo mero bueno. ![](https://static.platzi.com/media/user_upload/image-9c0b1106-11d5-4099-88ab-8d8e83077854.jpg) Saludos a todos.

18/11/2023

鈥溍吧 藞mi藧di蓹 k蓹d n蓲t bi 藞l蓹蕣d瑟d, 藞a瑟冒蓹 b瑟藞k蓹z 冒蓹 藞s蓽藧v蓹r 蓴藧 藞n蓻tw蓽藧k fe瑟ld 蓴藧 b瑟藞k蓹z 冒蓹 藞f蓴藧m忙t s n蓲t s蓹藞p蓴藧t瑟d.鈥

M脫DULOS en PYTHON en 9 minutos: import, from, as, namespace, math, random y m谩s

https://www.youtube.com/watch?v=hWbD_6xhYe0

Adore la parte de crear mis propios modulos y como importarlos de otro archivo al nuestro. Esto es muy util en la carrera como programador.

Crear tus propios m贸dulos en Python es una pr谩ctica com煤n cuando deseas organizar y reutilizar tu propio c贸digo en diferentes proyectos o partes de un proyecto m谩s grande. Aqu铆 tienes los pasos para crear y utilizar tus propios m贸dulos:

  1. Crea un Archivo Python: Comienza creando un archivo Python (con extensi贸n .py) que contendr谩 las funciones, clases o variables que deseas reutilizar. Por ejemplo, crea un archivo llamado mi_modulo.py.

  2. Define Funciones o Variables: Dentro de tu archivo mi_modulo.py, define las funciones, clases o variables que deseas incluir en tu m贸dulo. Por ejemplo:

    # mi_modulo.py
    
    def saludar(nombre):
        return f"Hola, {nombre}!"
    
    def calcular_cuadrado(numero):
        return numero ** 2
    
    mi_variable = 42
    
    
  3. Guarda el Archivo: Aseg煤rate de guardar el archivo despu茅s de definir tus funciones y variables.

  4. Usa tu M贸dulo: Ahora puedes importar y usar tu m贸dulo en otros programas Python. Para hacerlo, simplemente utiliza la palabra clave import seguida del nombre del archivo sin la extensi贸n .py. Por ejemplo:

    import mi_modulo
    
    print(mi_modulo.saludar("Juan"))  # Output: Hola, Juan!
    print(mi_modulo.calcular_cuadrado(5))  # Output: 25
    print(mi_modulo.mi_variable)  # Output: 42
    
    

    Si necesitas usar solo una parte espec铆fica de tu m贸dulo, puedes importar solo eso:

    from mi_modulo import calcular_cuadrado
    
    print(calcular_cuadrado(7))  # Output: 49
    
    
  5. Alias de M贸dulo: Tambi茅n puedes asignar un alias al m贸dulo para facilitar su uso:

    import mi_modulo as mm
    
    print(mm.saludar("Mar铆a"))  # Output: Hola, Mar铆a!
    
    
  6. Ubicaci贸n del M贸dulo: Aseg煤rate de que el archivo mi_modulo.py est茅 en una ubicaci贸n accesible desde el programa que lo importa. Puedes colocar el m贸dulo en el mismo directorio que el programa que lo utiliza o en un directorio incluido en la ruta de b煤squeda de Python.

Creando y utilizando tus propios m贸dulos, puedes organizar tu c贸digo de manera m谩s efectiva, promover la reutilizaci贸n y facilitar el mantenimiento de tus proyectos.

Les paso el peque帽o modulo que hice.
Ayuda a evaluar una palabra o Frase y hace una diccionarion con la version original, Mayusculas, Minusculas y como Nombre Propio
Algo sensilo pero es trrabajo honesto. Ja, ja.
馃憞馃憞馃憞馃憞馃憞馃憞

main. py 馃憞

import all_variations

word = input('驴Que palabra o Frase quieres validar? ')
print(all_variations.all_variations(word))

all_variations.py 馃憞

def all_variations(word):
  variations = {
    'Original': word
  }
  variations['Mayusculas'] = word.upper()
  variations['Minusculas'] = word.lower()
  variations['Nom Prop'] = word.title()
  return variations

Y este fue el Output. Pero varia dependiendo del INPUT que indiques.

{
  'Original': 'Hello World', 
  'Mayusculas': 'HELLO WORLD', 
  'Minusculas': 'hello world', 
  'Nom Prop': 'Hello World'
} 

Muy interesante esto de los m贸dulos, me cost贸 entender.
Lo que me pregunto c贸mo se procede cuando tenemos gran cantidad de datos en diferentes formatos para que Python logre filtrarlos?

Comparto el mismo ejercicio pero con la variante de hacer la b煤squeda basada en la poblaci贸n. Si la poblaci贸n no existe nos devuelve un mensaje.

Archivo Utils:

def consultar_poblacion (lista,filtro):
result = list(filter(lambda item : item[鈥榩oblacion鈥橾 == filtro, lista))
return result

Archivo Main:

import utlis

lista = [
{
鈥榩a铆s鈥: 鈥楶anam谩鈥,
鈥榩oblaci贸n鈥: 300
},
{
鈥榩ais鈥: 鈥楳exico鈥,
鈥榩oblacion鈥: 1000
}
]

poblacion = int(input('Introduce la poblacion -> '))

resultado = utlis.consultar_poblacion(lista,poblacion)

if len(resultado) > 0:
print(resultado)
else:
print (鈥楴o existe pa铆s con esa poblaci贸n鈥)

asi no importa si typeas con minuscula al principio

country = input('type country => ')
country = country.capitalize()

Excelente clase me gusta c贸mo se empieza a ver m谩s limpio el c贸digo.

Para reportar que el v铆deo numero 27 donde se habla de 鈥淢is propios m贸dulos鈥 no carga desde ning煤n navegador ni dispositivo. Intent茅 desde mi celular y computadora y todos los v铆deos cargan menos ese.

# Cualquier archivo .py puede ser un modulo
# Nombrar con nombres dicientes los modulos o cualquier cosa
# Normalmente los archivos con utilidades tienen solo funciones

import utils

keys, values = utils.get_population()
print(keys, values)

data = [
  {
    'Country': 'Colombia',
    'Population':50
  },
 {
    'Country': 'Bolivia',
    'Population':30
  },
  {
    'Country': 'USA',
    'Population':300
  },

]
country = input('Type Country => ')
result = utils.population_by_country(data, country)
print(result)

El main de la clase:

import utils

keys, values = utils.get_population()
print (keys, values)


data = [
    {
    'Country': 'Colombia',
    'Population': 300
    },
    {
    'Country': 'Mexico',
    'Population': 500
    },
    {
    'Country': 'Bolivia',
    'Population': 150
    }
]

country = input("Enter a country: ")

result = utils.population_by_country(data, country)
print(result)

El utils de la clase:

def get_population():
    keys = ['col', 'bol']
    values = [300, 400]
    return keys, values

def population_by_country(data, country):
    result = list(filter(lambda item: item['Country'] == country, data))
    return result

Utils File

import utils

data = [
    {
    "Country": "Chile",
    "Population": 17
    },
    {
    "Country": "Mexico",
    "Population": 35
    },
    {
    "Country": "Brazil",
    "Population": 45
    }
]

country = input("Type country: ")

result = utils.population_by_country(data, country)
print(type(result))
print(result)

user_result = f'Population of {country} is: ' + str(result[0]["Population"])
print(type(user_result))
print(user_result)

Main File

def population_by_country(data, country):
    result = list(filter(lambda item: item["Country"] == country, data))
    return result

Ejemplos, importar el m贸dulo math y usar la funci贸n sum de la siguiente manera en el archivo main .py

import math

result = math.sum(3, 4)
print(result)

En este caso, math es el nombre del m贸dulo, sum es el nombre de la funci贸n dentro del m贸dulo y result es la variable que almacena el resultado de la llamada a la funci贸n. (estab dentro de la misma carpeta)

En los archivos de recurso: el 鈥渦tils鈥 es distinto al que se hizo en esta clase.

Cualquier archivo en python ya se considera un m贸dulo

utils

# Mis propios m贸dulos
'''
Los modulos en Python son cualquier archivo con extension .py
Dentro de un modulo nosotros podemos definir Funciones, Clases o Variables
'''

def get_population():
  keys = ["col", "bol"]
  values = [300, 400]
  return keys, values

def population_by_country(data, country):
  result = list(filter(lambda item: item["Country"] == country, data))
  return result

main

# Importamos el modulo
import utils

keys, values = utils.get_population()
print(keys, values)

data = [
  {
    "Country": "Colombia",
    "Population": 500
  },
  {
    "Country": "Bolivia",
    "Population": 400
  }
]

country = input("Type Country => ")
result = utils.population_by_country(data, country)
print(result)

Mod, donde tengo una funci贸n que devuelve una lista con la poblaci贸n de los pa铆ses y otra que devuelve la informaci贸n de un pa铆s en especifico que le pasemos como par谩metro.

def getPopulation( data):
    population = [i["Population"] for i in data]
    return population    

def request_country_info(data, country):
    result = list(filter(lambda x: x['Name'] == country, data))
    
    for key, value in result[0].items():
        print(f"{key}: {value}")
        
    return result

En el main importamos el modulo y creamos una lista con la data que necesitamos para que mod funcione.

import mod

countries = [ 
    {"Name": "United States", "Population": 328, "Capital": "Washington, D.C."},    
    {"Name": "Canada", "Population": 38, "Capital": "Ottawa"},    
    {"Name": "United Kingdom", "Population": 67, "Capital": "London"},    
    {"Name": "France", "Population": 67, "Capital": "Paris"},    
    {"Name": "Germany", "Population": 83, "Capital": "Berlin"},
    {"Name": "Italy", "Population": 60, "Capital": "Rome"}
]
        

def main():
    print(mod.getPopulation(countries)) 
    
    pais = str(input("Ingresa un pais: "))
    mod.request_country_info(countries, pais)
    
if __name__ == "__main__":
    main()

voy por aqui

Muy buena clase!

cool no hay que ponerle export como en js

Volviendo desde la clase 40 para repasar estos conceptos y afrontar bien los retos.

Presten atencion! super importante esto!

main py

import utils

llaves,valores=utils.obtener_poblacion()
print(llaves)
print(valores)
print(llaves,valores)

letra=utils.A
print(letra)

data=[
    {
        "country":"colombia",
        "poblacion":300
    },
    {
        "country":"peru",
        "poblacion":200
    }
]
pais=input("Ingrese el pais que desea buscar")
datos_peru=utils.poblacion_por_pais(data,pais)
print(datos_peru)

utils py

def obtener_poblacion():
    llaves=["col","bol"]
    valores=[300,400]
    return llaves,valores

A="Hola"

def poblacion_por_pais(data,pais):
    result=list(filter(lambda x:x["country"]==pais,data))
    return result
    

Yo la lista 鈥榙ata鈥 la hice con informaci贸n diferente. En el input mandaba a pedir la estatura. La lista me aparec铆a vac铆a hasta que record茅 entonces que el input te entrega un string, por lo que antes deb铆a ponerle 鈥榝loat鈥

  • Para trabajar con tus propios m贸dulos en Python, primero debes crear un archivo de Python que contenga el c贸digo que quieres reutilizar. Luego, puedes importar este archivo como cualquier otro m贸dulo.

  • Por ejemplo, supongamos que tienes un archivo llamado mis_funciones.py que contiene algunas funciones 煤tiles que quieres reutilizar en varios programas. El archivo mis_funciones.py podr铆a tener este aspecto:

def saludar(nombre):
    print(f"Hola, {nombre}")

def sumar(a, b):
    return a + b

  • Para usar este m贸dulo en otro programa, primero debes importarlo. Puedes hacerlo con la declaraci贸n import:
import mis_funciones

mis_funciones.saludar("Juan")
resultado = mis_funciones.sumar(1, 2)
print(resultado)

  • Tambi茅n puedes importar solo algunas de las funciones de tu m贸dulo usando la declaraci贸n from y import. Por ejemplo:
from mis_funciones import saludar

saludar("Juan")

Nuestro Propios Modulos

En una misma carpeta creamos dos archivos: main que es el archivo principal y utils que contendra todas las funciones que vamos a utilizar ambos arhcivos con extension py. Ahora desde main podemos utilizar todas las funciones del archivo utils al importarlo como un modulo.
Archivo utils

#-------- modulo ---------

#funcion para obtener la poblacion de un pais
def get_population():
  keys = ['colombia', 'bolivia', 'mexico', 'nicaragua']
  values = [30, 18, 100, 7]
  return keys, values

# Variable
A = 'hola'

# obtener la poblacion basados en un pais
def population_by_country(data, country):
  result = list(filter(lambda item: item['Country'] == country, data))
  return result

Archivo main

# llamar al modulo utils
import utils

# utilizar la funcion get_population
Pais, Poblacion = utils.get_population()
print(Pais, Poblacion)
--> ['colombia', 'bolivia', 'mexico', 'nicaragua'] 
		[30, 18, 100, 7]

# utilizar la variable A
print(utils.A)
--> hola

# lista de paises con su repectiva poblacion
data = [
  {
    'Country':'colombia',
    'Population':30
  },
  {
    'Country':'bolivia',
    'Population':18
  },
  {
    'Country':'mexico',
    'Population':100
  },
  {
    'Country':'nicaragua',
    'Population':7
  }
]

# obtener la poblacion de un pais especifico
poblacion = utils.population_by_country(data, 'mexico')
print(poblacion)
--> [{'Country': 'mexico', 'Population': 100}]

# obtener el pais del cual queremos saber su poblacion de forma dinamica
country = input('Digite el pais: ')
poblacion_pais = utils.population_by_country(data, country)
print(poblacion_pais)
--> Digite el pais: nicaragua
		[{'Country': 'nicaragua', 'Population': 7}]
  • Por fin entiendo el concepto de m贸dulos, se me hizo larga la clase pero lo entend铆 muy bien

Genial entonces ahora las funciones van separadas!