Pasar función como argumento en Python

Una función puede tomar múltiples argumentos, estos argumentos pueden ser objetos, variables (del mismo o diferente tipo de datos) y funciones. Las funciones de Python son objetos de primera clase . En el siguiente ejemplo, se asigna una función a una variable. Esta asignación no llama a la función. Toma el objeto de función al que hace referencia gritar y crea un segundo nombre que apunta a él, gritar.

# Python program to illustrate functions 
# can be treated as objects 
def shout(text): 
    return text.upper() 
    
print(shout('Hello')) 
    
yell = shout 
    
print(yell('Hello')) 

Producción:

HELLO
HELLO

Funciones de orden superior

Como las funciones son objetos, podemos pasarlas como argumentos a otras funciones. Las funciones que pueden aceptar otras funciones como argumentos también se denominan funciones de orden superior . En el siguiente ejemplo, se crea una función saludar que toma una función como argumento.

# Python program to illustrate functions 
# can be passed as arguments to other functions 
def shout(text): 
    return text.upper() 
  
def whisper(text): 
    return text.lower() 
  
def greet(func): 
    # storing the function in a variable 
    greeting = func("Hi, I am created by a function passed as an argument.") 
    print(greeting)
  
greet(shout) 
greet(whisper) 

Producción

HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT.
hi, i am created by a function passed as an argument.

Función de envoltorio

La función wrapper o decorador nos permite envolver otra función para extender el comportamiento de la función envuelta, sin modificarla permanentemente. En Decorators, las funciones se toman como argumento en otra función y luego se llaman dentro de la función contenedora. Para saber más sobre decorador haz click aquí .

A continuación se muestra el ejemplo de un decorador simple.

# defining a decorator 
def hello_decorator(func): 
    
    # inner1 is a Wrapper function in  
    # which the argument is called 
        
    # inner function can access the outer local 
    # functions like in this case "func" 
    def inner1(): 
        print("Hello, this is before function execution") 
    
        # calling the actual function now 
        # inside the wrapper function. 
        func() 
    
        print("This is after function execution") 
            
    return inner1 
    
    
# defining a function, to be called inside wrapper 
def function_to_be_used(): 
    print("This is inside the function !!") 
    
    
# passing 'function_to_be_used' inside the 
# decorator to control its behavior 
function_to_be_used = hello_decorator(function_to_be_used) 
    
    
# calling the function 
function_to_be_used() 

Producción:

Hello, this is before function execution
This is inside the function !!
This is after function execution

Función de envoltura lambda

En Python, función anónima significa que una función no tiene nombre. Como ya sabemos, la def palabra clave se usa para definir las funciones normales y la lambda palabra clave se usa para crear funciones anónimas. Esta función puede tener cualquier número de argumentos, pero solo una expresión, que se evalúa y devuelve. La función Lambda también puede tener otra función como argumento. El siguiente ejemplo muestra una función lambda básica donde se pasa otra función lambda como argumento.

# Defining lambda function
square = lambda x:x * x
  
# Defining lambda function
# and passing function as an argument
cube = lambda func:func**3
  
  
print("square of 2 is :"+str(square(2)))
print("\nThe cube of "+str(square(2))+" is " +str(cube(square(2))))

Producción:

square of 2 is :4

The cube of 4 is 64

Publicación traducida automáticamente

Artículo escrito por karthikshenoy2001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *