👑¿Qué son los DECORADORES en Python? | Curso Python

preview_player
Показать описание
Los decoradores en python pueden ser confusos... ¡Hasta que veas este vídeo! Entra aquí que explico los decoradores de python desde cero.

👍🏼 En este vídeo del curso de python desde cero, comenzamos a ver las funciones decoradores. Estas funciones añaden funcionalidades al resto de funciones del programa.

⛔¡Alto aquí! Inspección de máquinas ¿Te has leído todo esto? Uf, muy pocos han llegado. Comenta "persiana" para que yo me entere de que eres uno de los pocos máquinas.

👍🏼 Usando los decoradores de python, podemos modificar el comportamiento de las funciones de nuestro programa. Además, son una buena forma de reutilizar el código y programar de forma más limpia y ordenada.

👍🏼 Vamos a ver un ejemplo de cuándo usar decoradores en python. Y además, os pondré un pequeño reto para que vosotros los resolváis.

🎬 TIMESTAMPS:
00:00 - Hago ASMR y el payaso.
01:30 - Las funciones de Python son objetos.
07:50 - Pasar funciones como argumento de otra funcion
15:50 - ¿Para qué sirve la @ en Python?
22:50 - Decoradores con argumentos
25:00 - Ejercicio Resuelto.
32:30 - Os pongo deberes por culpa de Fernando (es broma)
34:28 - Resolvemos el ejercicio de Decoradores.
Комментарии
Автор

Me voy a ver TODOs tus vídeos de Python (antiguos y recientes), para aprender y honrar todo el esfuerzo que le has puesto hasta ahora.

carlosarrasco
Автор

Muy buena la explicación, muchas gracias. Tienes otro suscriptor 😁

Jose-fcv
Автор

¡¡Muchas gracias!! La primera vez que veo y entiendo esto, después de 100 intentos...

jonintxaurbe
Автор

Claro y divertido. Mil puntos para vos y un chape desde Argentina

letscodemom
Автор

Me suscribo porque literal explicaste mejor que todos los youtubers :)

javierchoquepaucar
Автор

Soy fan de mirar diferentes fuentes al momento de aprender un tema en concreto y llevo un tiempo aprendiendo de python en sitios o canales de youtube my buenos, pero bro en serio que manera tan cool de explicar todo, lo haces ver muy facil.
Te ganaste otro sub y definitivamente me vere todos los video de que saques.
Espero que puedas seguir en youtube muchisimo tiempo, Gracias totales.

marcoaguirre
Автор

Muy buen contenido, me suscribi hace poco y estoy asombrado no solo por la cantidad, tambien por la calidad de tus videos... Muchas gracias 👍👍👍👍

johncaballero
Автор

Acabo de encontrar Tu canal buscando entender mejor este tema, y definitivamente me suscribo! Gracias Dimas!

carlosarrasco
Автор

Pero debería devolver el término máximo de los números multiplicados! Excelnte explicación capo.

ellukayou
Автор

def hola(wrapped):
def wrapper(*args, **kwargs):
filtro=list(filter(lambda arg : arg%2==0), args)
resultado = wrapped(*filtro, **kwargs)
print(f"El resultado de la operación es {resultado}\n")
return wrapped

@hola
def multiplicación(*args, lim):
cont =0
for arg in args:
cont*= arg
if cont >=lim:
return lim
return cont
multiplicación(2, 3, 4, 6, lim=8)
print("hello")

xtrangernowroljunkghipwate
Автор

Hola Dimas, como siempre un gran video. ME apunto a lo que comentas en tu video de hacer un proyecto ... no se algo útil.... quizás cuando termines con el video de SQL Lite un proyecto .... de facturación? .... introducción del albaranes sobre un fichero de artículos? .... hacer un pedido sobre un fichero de artículos, proveedores....no se algo más versátil sobre la realidad. ¿Qué te parece?....Gracias de nuevo por tus videos.

Diznar
Автор

creí que estaba empezando a entender la programación, pero ver esto me a hecho pensar que no se nada todavía xD

danielalvarez
Автор

La verdad es que he aprendido mas contigo que con cursos pagos.

jesusmedina
Автор

Hola Dimas, muchas gracias por tu esfuerzo, debo decir que explicas muy bien, aunque yo parece que llego tarde a Python, por lo que me está costando un poco entender los @propertys, herencias y funciones internas... estoy en un curso donde nos estan dando esto mismo, pero empiezan a usar delante de las variables el signo __ el cual me tiene loco.... ejemplo: variable dni, y luego dentro de la clase __dni y que si setter.__dni y ya entre una cosa y otra llevo la cabeza para estallar... jajaja, siento la chapa (resumiendo que debo empollar mucho mas para ponerme al dia)

salekjatriandala
Автор

for key, value in kwargs.items():
if acc >= value:
return value
else:
return acc

multiplicar(1, 2, 3, 4, 5, 6, max=50)
# mi respuesta es recoger el valor maximo que se pase y validar si acc es mayor o no al maximo que hemos pasado, puede que lo halla echo mal ya que simple mente podria cambiar el kwargs por un parametro maximo, porque como se ve no estoy usando el key para nada es como si solo usara mas recurso porque si, a ver como lo haces voce

oscargacha
Автор

Algo que utilizo yo para sumar cantidades grandes de numeros enteros es sumar de a 10... me explico:
en el caso print(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
el 10 por si solo ya es 10 XD
por lo que tomandolo quedaria la lista #print(1, 2, 3, 4, 5, 6, 7, 8, 9)
y en mi cabeza el sumando = 10
tomo el 1 y el 9 que son 10 #print(2, 3, 4, 5, 6, 7, 8)
sumando = 20
(2, 8) = 10 #print(3, 4, 5, 6, 7)
sumando = 30
(3, 7) = 10 #print(4, 5, 6)
sumando = 40
(4, 6) = 10 #print(5)
sumando = 50 + 5
sumFunal = 55
(se que una calculadora o mismo un programa lo hace solo... pero si un dia hay que sumar cosas complicadas sin tecnologia cerca... salva las papas, obviamente tambien se aplica a centenas y tal no?)

dhanglizgamerymas
Автор

pero como 6 si 3 es impar y no debería multiplicarlo?

Mech
Автор

print('''1th. Escribe una lista de los numeros a operar
serapado por comas. Ejemplo: 1, 2, 3, 4, 5...\n''')
Nums = input('- ')
print('''2th. Escribe el limitador(es opcional) si no vas a poner presiona enter
(por defecto el limite es 50''')

FixedLimit = 50 # valor por defecto del limitador

while True: # un while para asegurar la correcta escritura

Limit = input('- ') # input del limitador
if Limit.isnumeric():
FixedLimit = int(Limit)
break
elif Limit == '':
break
else:
print('no se recoce el limitador. Vuelve a intentarlo.')
continue

FixedNums = Nums.split(', ')
contador = 0

for a in FixedNums:
FixedNums[contador] = a.replace(' ', '')
contador += 1

FixedNumsList = [] # lista para filtrar solo los numeros naturales
Errors = [] # lista de los numeros que no pasaran el filtro
for x in FixedNums:
if x.isnumeric():
x = int(x)
FixedNumsList.append(x)
else:
Errors.append(x)

print(f'''Esta es la lista que pasaron el filtro: {FixedNumsList}. Estos son los errores: {Errors}
y el limitador es: {FixedLimit}\n''')


def OperarPares(Funcion):
def Wrapper(*args, **kwargs):
COMIENZA LA DECORACION
SoloPares = list(filter(lambda x: x % 2 == 0, args))
print(f'\nEstos son los numeros pares en tu lista: {SoloPares}')
ProductoDePares = Funcion(*SoloPares)

return print(f'Este es el producto de los pares de tu lista: {ProductoDePares}')

return Wrapper


@OperarPares
def Multiplicar(*args, **kwargs):
Producto = 1
for Factor in args:
Producto *= Factor
if Producto > FixedLimit:
Producto = FixedLimit
return Producto
else:
return Producto


Multiplicar(*FixedNumsList, limite=FixedLimit) # Ejecucion del programa



resumen: NO SUPE COMO INCLUIR LAS KEYWORDS EN EL PROGRAMA! :( PEERSIANAAA

edwinferrer
Автор

no me gusto tu solucion, la idea de los decoradores es dejar la función original lo mas intacta posible y los cambios hacerlos en la función decoradora, yo lo que hice fue en el wrapper utilizar el try/except loop, en el try intentaría buscar kwargs["max"], si existe entonces con un condicional devuelve lo que corresponde, si intentamos acceder a un elemento que no existe nos lanza un error, en ese caso se ejecuta en el except la funcion multiplicar sin el **kwargs, solo con *args. Asi en la función original multiplicar no cambio absolutamente nada excepto la adición de **kwargs en los parámetros.

from functools import reduce

def con_max(fn):
def wrapper(*args, **kwargs):
try:
if fn(*args, **kwargs) < kwargs["max"]:
return fn(*args, **kwargs)
else:
return kwargs["max"]
except:
return fn(*args)
return wrapper

@con_max
def multiplicar(*args, **kwargs):
return reduce(lambda a, c: a*c, args)

facundobogado
Автор

31:07 Como cuando te llega una vista previa de un whatsapp de tu novia diciendo "Tenemos que hablar" y cuando lo abres dice:
-Tenemos que hablar
comemos carne o pollo a la noche?

federicopodesta
welcome to shbcf.ru