Argumentos predeterminados en funciones de Python

A

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 ​​en 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

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad