¿Cómo pasar parámetros opcionales a una función en Python?

En Python, cuando definimos funciones con valores predeterminados para ciertos parámetros, se dice que sus argumentos se establecen como una opción para el usuario. Los usuarios pueden pasar sus valores o pueden pretender que la función use sus valores predeterminados que se especifican.

De esta forma, el usuario puede llamar a la función pasando esos parámetros opcionales o simplemente pasando los parámetros requeridos. 

Hay dos formas principales de pasar parámetros opcionales en python 

  • Sin utilizar argumentos de palabras clave.
  • Mediante el uso de argumentos de palabras clave.

Pasar sin usar argumentos de palabras clave

Un punto principal que debe tenerse en cuenta al pasar sin usar argumentos de palabras clave es:

  • El orden de los parámetros debe mantenerse, es decir, el orden en el que se definen los parámetros en la función debe mantenerse mientras se llama a la función.
  • Los valores para los parámetros no opcionales deben pasarse; de ​​lo contrario, arrojará un error.
  • El valor de los argumentos predeterminados se puede pasar o ignorar.

A continuación se presentan algunos códigos que explican este concepto.

Ejemplo 1:

Python3

# Here b is predefined and hence is optional.
def func(a, b=1098):
    return a+b
 
 
print(func(2, 2))
 
# this 1 is represented as 'a' in the function and
# function uses the default value of b
print(func(1))

Producción:

4
1099

Ejemplo 2: también podemos pasar strings.

Python3

# Here string2 is the default string used
def fun2(string1, string2="Geeks"):
    print(string1 + string2)
 
 
# calling the function using default value
fun2('GeeksFor')
 
# calling without default value.
fun2('GeeksFor', "Geeks")

Producción:

GeeksForGeeks
GeeksForGeeks

Pasar con argumentos de palabras clave

Cuando se definen funciones, los parámetros se escriben en la forma «nombre de palabra clave de tipo de datos». Entonces, Python proporciona un mecanismo para llamar a la función usando el nombre de la palabra clave para pasar los valores. Esto ayuda al programador al evitar que aprenda la secuencia o el orden en que se deben pasar los parámetros.

Algunos puntos importantes que debemos recordar son los siguientes:

  • En este caso, no estamos obligados a mantener el orden de pasar los valores.
  • No debería haber diferencia entre los nombres de palabras clave pasados ​​y declarados.

A continuación se muestra el código para su implementación.

Python3

# Here string2 is the default string used
def fun2(string1, string2="Geeks"):
    print(string1 + string2)
 
 
# Thiscan be a way where no order is needed.
fun2(string2='GeeksFor', string1="Geeks")
 
# since we are not mentioning the non-default argument
# so it will give error.
fun2(string2='GeeksFor')

Producción:

Como podemos ver, no requerimos que se mantenga ningún orden en el ejemplo anterior. Además, podemos ver que cuando tratamos de pasar solo los parámetros opcionales, genera un error. Esto sucede porque los parámetros opcionales se pueden omitir ya que tienen un valor predeterminado con ellos, pero no podemos omitir los parámetros requeridos (string1 en el caso anterior). Por lo tanto, muestra un error con el indicador: «falta 1 argumento requerido».

Este ejemplo le dará una idea más clara del tema anterior:

Python3

def func(a, b, c='geeks'):
    print(a, "type is", type(a))
    print(b, "type is", type(b))
    print(c, "type is", type(c))
 
 
# The optional parameters will not decide
# the type of parameter passed.
# also the order is maintained
print("first call")
func(2, 'z', 2.0)
 
# below call uses the default
# mentioned value of c
print("second call")
func(2, 1)
 
# The below call (in comments) will give an error
# since other required parameter is not passed.
# func('a')
print("third call")
func(c=2, b=3, a='geeks')

Producción:

first call
2 type is <class 'int'>
z type is <class 'str'>
2.0 type is <class 'float'>
second call
2 type is <class 'int'>
1 type is <class 'int'>
geeks type is <class 'str'>
third call
geeks type is <class 'str'>
3 type is <class 'int'>
2 type is <class 'int'>

Entonces, básicamente, las llamadas funcionales de Python verifican solo si se pasa o no la cantidad requerida de parámetros funcionales.

A continuación se muestra el caso en el que un usuario intenta pasar argumentos de las dos formas discutidas anteriormente junto con la precaución dada:

Python3

def comp(a, b=2):
    if(a < b):
        print("first parameter is smaller")
    if(a > b):
        print("second parameter is smaller")
    if(a == b):
        print("both are of equal value.")
 
 
print("first call")
comp(1)
print("second call")
comp(2, 1)
print("third call")
comp(b=1, a=-1)
print("fourth call")
comp(-1, b=0)

Producción:

first call
first parameter is smaller
second call
second parameter is smaller
third call
first parameter is smaller
fourth call
first parameter is smaller

Entonces, una cosa que debemos recordar es que el argumento de palabra clave debe usarse después de que se pasen todos los argumentos posicionales. Por lo tanto, esto es algo importante que debemos tener en cuenta al pasar parámetros en ambos sentidos a la misma función.

Publicación traducida automáticamente

Artículo escrito por harshkumarchoudhary144 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 *