Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- #
- # Funciones: devuelven valores basados en argumentos
- """
- def sumar(n):
- return n + 1
- print(sumar(3))
- # LAS FUNCIONES SON INSTANCIAS OBJETOS DE PRIMERA CLASE
- def diga_hola(nombre):
- return f"Hola {nombre}"
- def es_maravilloso(nombre):
- return f"{nombre} es maravilloso"
- def saludar_a_juan(funcion): # se pasa la referencia a la funcion
- return funcion("Juan")
- print(saludar_a_juan(diga_hola))
- print(saludar_a_juan(es_maravilloso))
- # funciones internas: son funciones dentro de otras funciones
- def padre():
- print("Dentro de la función padre")
- def primer_hijo():
- print("Dentro del primer hijo")
- def segundo_hijo():
- print("Dentro del segundo hijo")
- segundo_hijo()
- primer_hijo()
- padre() # imprime padre, segundo hijo, primer hijo
- # esto da error: llamar a func. internas desde afuera
- # primer_hijo()
- # devolviendo funciones internas
- def padre(numero):
- def primer_hijo():
- print("Hola, soy Ana, la primera hija")
- def segundo_hijo():
- print("Hola, soy Hugo, el segundo hijo")
- if numero == 1:
- return primer_hijo
- else:
- return segundo_hijo
- primero = padre(1)
- print(primero())
- # decorador simple
- def mi_decorador(funcion):
- def wrapper():
- print("antes de llamar a la función")
- funcion()
- print("despues de llamar a la función")
- return wrapper
- def diga_whisky():
- print("whisky")
- diga_whisky = mi_decorador(diga_whisky)
- diga_whisky()
- from datetime import datetime
- def solo_de_dia(funcion):
- def wrapper():
- if 7 <= datetime.now().hour < 21:
- funcion()
- else:
- pass
- return wrapper
- # Decorador sin @
- #def gritar():
- # print("AAAAAAAHHHHHHHHH")
- #gritar = solo_de_dia(gritar)
- #gritar()
- ##### Decorador con @
- @solo_de_dia
- def gritar():
- print("AAAAAAAHHHHHHHHH")
- gritar()
- # reuso de decoradores para funciones sin argumentos
- from decoradores import duplicar_borrador
- @duplicar_borrador
- def diga_hola():
- print("Hola")
- diga_hola()
- # decorando funciones con argumentos
- from decoradores import duplicar
- @duplicar
- def diga_hola(nombre):
- print(f"Hola {nombre}")
- diga_hola("Juan")
- @debug
- def saludar(nombre, edad=None):
- if edad is None:
- return f"Hola bebé {nombre}"
- else:
- return f"Hola {nombre}, usted tiene {edad} años"
- print("Debugging...")
- saludar("Benjamín")
- saludar("Ricardo", 44)
- """
- from decoradores import debug, timer
- class PierdeTiempo:
- @debug
- def __init__(self, maximo):
- self.maximo = maximo
- @timer
- def perder_tiempo(self, veces):
- for _ in range(veces):
- sum([i**2 for i in range(self.maximo)])
- print("pierde tiempo")
- demora = PierdeTiempo(1000)
- demora.perder_tiempo(999)
- @timer
- def dormir():
- import time
- time.sleep(10)
- return 0
- dormir()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement