Argumentos predeterminados en funciones de Python

    Las funciones en Python se utilizan para implementar la l贸gica que desea ejecutar repetidamente en diferentes lugares de su c贸digo. Puede pasar datos a estas funciones a trav茅s de argumentos de funci贸n. Adem谩s de pasar argumentos a funciones a trav茅s de una llamada de funci贸n, tambi茅n puede establecer valores de argumento predeterminados en funciones de Python. Estos valores predeterminados se asignan a argumentos de funci贸n si no pasa expl铆citamente un valor de par谩metro al argumento dado. Los par谩metros son los valores que realmente se pasan a los argumentos de la funci贸n.

    En este art铆culo, ver谩 c贸mo usar argumentos predeterminados en funciones de Python. Pero primero, veremos c贸mo definir una funci贸n en Python y c贸mo pasar expl铆citamente valores a los argumentos de la funci贸n.

    Funci贸n sin argumentos

    Definamos una funci贸n Python muy simple sin ning煤n argumento:

    def my_function():
        print("This is a function without arguments")
    

    El script anterior define una funci贸n, my_function, que no acepta ning煤n argumento y simplemente imprime una cadena.

    La siguiente secuencia de comandos muestra c贸mo llamar铆a realmente al my_function() funci贸n:

    my_function()
    

    En el resultado, deber铆a ver una declaraci贸n simple impresa en la pantalla por el my_function() funci贸n:

    This is a function without arguments
    

    Funci贸n con argumentos expl铆citos

    Definamos ahora una funci贸n Python simple donde tenemos que pasar m煤ltiples valores para los argumentos de la funci贸n. Si no especifica valores para todos los argumentos de la funci贸n, ver谩 un error.

    Aqu铆 est谩 la funci贸n que usaremos como ejemplo:

    def func_args(integer1, integer2):
        result = integer1 + integer2
        return result
    

    En el c贸digo anterior creamos una funci贸n, func_args(), con dos argumentos integer1 y integer2. La funci贸n suma los valores pasados 鈥嬧媏n los dos argumentos y devuelve el resultado al llamador de la funci贸n.

    Intentemos llamar a la funci贸n anterior con dos argumentos:

    result = func_args(10, 20)
    print(result)
    

    El script anterior llama al func_args() m茅todo con dos valores de par谩metro, es decir, 10 y 20. En la salida, deber铆a ver la suma de estos dos valores, es decir, 30.

    Intentemos ahora llamar al func_args() m茅todo sin pasar valores para los argumentos:

    result = func_args()
    print(result)
    

    En la salida, deber铆a ver el siguiente error:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-13-3449c8e5e188> in <module>
    ----> 1 result = func_args()
          2 print(result)
    
    TypeError: func_args() missing 2 required positional arguments: 'integer1' and 'integer2'
    

    El error es bastante claro, la funci贸n llamada a func_args() faltan los 2 argumentos posicionales requeridos, integer1 y integer2. B谩sicamente, el error nos dice que debemos pasar valores para el integer1 y integer2 argumentos a trav茅s de la llamada a la funci贸n.

    Pasemos ahora un valor para uno de los argumentos y veamos qu茅 sucede:

    result = func_args(10)
    print(result)
    

    Ahora, en la salida, deber铆a volver a ver el siguiente error:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-14-640ec7b786e1> in <module>
    ----> 1 result = func_args(10)
          2 print(result)
    
    TypeError: func_args() missing 1 required positional argument: 'integer2'
    

    La diferencia aqu铆 es que el error ahora nos dice que el valor de uno de los argumentos posicionales, es decir integer2, Est谩 perdido. Esto significa que sin ning煤n valor de argumento predeterminado establecido, debe pasar valores expl铆citamente para todos los argumentos de la funci贸n; de lo contrario, se producir谩 un error.

    驴Qu茅 sucede si desea que su funci贸n se ejecute con o sin los valores de los argumentos en la llamada a la funci贸n? Aqu铆 es donde entran en juego los argumentos predeterminados en las funciones de Python.

    Funci贸n con argumentos predeterminados

    Los argumentos predeterminados en las funciones de Python son aquellos argumentos que toman valores predeterminados si no se pasan valores expl铆citos a estos argumentos desde la llamada a la funci贸n. Definamos una funci贸n con un argumento predeterminado.

    def find_square(integer1=2):
        result = integer1 * integer1
        return result
    

    El script anterior define una funci贸n find_square() con un argumento predeterminado, es decir integer1. El valor predeterminado para integer1 el argumento se establece en 2. Si llama al find_square() m茅todo con un valor para el integer1 argumento, el find_square() La funci贸n devolver谩 el cuadrado de ese valor.

    De lo contrario, si no pasa ning煤n valor para el integer1 argumento de la find_square() funci贸n, ver谩 que el valor predeterminado, es decir, 2, se asignar谩 a integer1, y la funci贸n devolver谩 el cuadrado de 2, es decir, 4.

    Primero llamemos al find_square() m茅todo con el valor de argumento de 10:

    result = find_square(10)
    print(result)
    

    Salida:

    100
    

    Cuando ejecuta el script anterior, el valor 10 sobrescribe el valor predeterminado de 2 para el argumento integer1 del find_square() funci贸n y la funci贸n devuelve 100, que es un cuadrado de 10.

    Ahora llamaremos al find_square() funci贸n sin ning煤n valor para el argument1 argumento. En este caso, ver谩 que 4 ser谩n devueltos por find_square() funci贸n ya que en ausencia del valor para el find_square() funci贸n, el valor predeterminado de 2 se utilizar谩 como valor para la find_square() funci贸n, como se muestra a continuaci贸n:

    result = find_square()
    print(result)
    

    Salida:

    4
    

    Una funci贸n de Python tambi茅n puede tener varios argumentos predeterminados. Por ejemplo, en el siguiente script, la funci贸n suma el n煤mero entero pasado a los argumentos. Si no se pasa ninguno de los valores enteros a la funci贸n, los argumentos predeterminados tomar铆an los valores 2 y 4 respectivamente, como se muestra a continuaci贸n:

    def add_ints(integer1=2, integer2=4):
        result = integer1 + integer2
        return result
    

    Primero llamemos al add_ints() funci贸n sin ning煤n par谩metro:

    result = add_ints()
    print(result)
    

    Salida:

    6
    

    Como no pasamos ning煤n valor para los argumentos de la funci贸n, los valores de los argumentos predeterminados, es decir, 2 y 4, se han sumado.

    Pasemos ahora dos de nuestros propios valores al add_ints() funci贸n:

    result = add_ints(4, 8)
    print(result)
    

    Salida:

    12
    

    Como se esperaba, se sumaron 4 y 8 para devolver 12.

    Una funci贸n de Python puede tener argumentos tanto normales (expl铆citos) como predeterminados al mismo tiempo. Creemos una funci贸n take_power(). El primer argumento de la funci贸n es un argumento normal mientras que el segundo argumento es un argumento predeterminado con un valor de 2. La funci贸n devuelve el resultado del valor en el primer argumento elevado a la potencia del valor en el segundo argumento.

    def take_power(integer1, integer2=2):
        result = 1
        for i in range(integer2):
            result = result * integer1
    
        return result
    

    Primero pasemos un solo argumento:

    result = take_power(3)
    print(result)
    

    Salida:

    9
    

    En el script anterior, se ha pasado 3 como valor al integer1 argumento de la take_power() funci贸n. No se ha proporcionado ning煤n valor para el argumento predeterminado integer2. Por lo tanto, el valor predeterminado de 2 se usar谩 para tomar la potencia de 3 y ver谩 9 en la salida.

    Pasemos ahora dos valores al take_power() funci贸n.

    result = take_power(3, 4)
    print(result)
    

    En la salida, ver谩 3 elevado a la cuarta potencia, es decir, 81.

    Es importante tener en cuenta que los par谩metros con argumentos predeterminados no puede ser seguido por par谩metros sin un argumento predeterminado. Tome la siguiente funci贸n, por ejemplo:

    def take_power(integer1=2, integer2):
        result = 1
        for i in range(integer2):
            result = result * integer1
    
        return result
    

    Intentar llamar a esta funci贸n resultar谩 en un error ya que el primer argumento tiene un valor predeterminado, pero el segundo no:

    result = take_power(3, 4)
    print(result)
    

    La ejecuci贸n de este c贸digo da como resultado el siguiente error:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-14-640ec7b786e1> in <module>
    ----> 1 def take_power(integer1=3, integer2):
          2     result = 1
    
    SyntaxError: non-default argument follows default argument
    

     

    Etiquetas:

    Deja una respuesta

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