Argumentos de la función de Python
Argumentos de la función de Python
En Python, puede definir una función que tome un número variable de argumentos. En este artículo, aprenderá a definir tales funciones utilizando argumentos predeterminados, de palabras clave y arbitrarios.
Video:Argumentos de funciones de Python:posicionales, palabras clave y predeterminados
Argumentos
En el tema de funciones definidas por el usuario, aprendimos sobre cómo definir una función y llamarla. De lo contrario, la llamada a la función dará como resultado un error. Aquí hay un ejemplo.
def greet(name, msg):
"""This function greets to
the person with the provided message"""
print("Hello", name + ', ' + msg)
greet("Monica", "Good morning!")
Salida
Hello Monica, Good morning!
Aquí, la función greet()
tiene dos parámetros.
Como hemos llamado a esta función con dos argumentos, se ejecuta sin problemas y no obtenemos ningún error.
Si lo llamamos con un número diferente de argumentos, el intérprete mostrará un mensaje de error. A continuación se muestra una llamada a esta función con uno y sin argumentos junto con sus respectivos mensajes de error.
>>> greet("Monica") # only one argument TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet() # no arguments TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
Argumentos de funciones variables
Hasta ahora, las funciones tenían un número fijo de argumentos. En Python, hay otras formas de definir una función que puede tomar un número variable de argumentos.
A continuación se describen tres formas diferentes de este tipo.
Argumentos predeterminados de Python
Los argumentos de función pueden tener valores predeterminados en Python.
Podemos proporcionar un valor predeterminado a un argumento usando el operador de asignación (=). Aquí hay un ejemplo.
def greet(name, msg="Good morning!"):
"""
This function greets to
the person with the
provided message.
If the message is not provided,
it defaults to "Good
morning!"
"""
print("Hello", name + ', ' + msg)
greet("Kate")
greet("Bruce", "How do you do?")
Salida
Hello Kate, Good morning! Hello Bruce, How do you do?
En esta función, el parámetro name
no tiene un valor predeterminado y se requiere (obligatorio) durante una llamada.
Por otro lado, el parámetro msg
tiene un valor predeterminado de "Good morning!"
. Por lo tanto, es opcional durante una llamada. Si se proporciona un valor, sobrescribirá el valor predeterminado.
Cualquier número de argumentos en una función puede tener un valor predeterminado. Pero una vez que tenemos un argumento predeterminado, todos los argumentos a su derecha también deben tener valores predeterminados.
Esto significa que los argumentos no predeterminados no pueden seguir a los argumentos predeterminados. Por ejemplo, si hubiéramos definido el encabezado de la función anterior como:
def greet(msg = "Good morning!", name):
Obtendríamos un error como:
SyntaxError: non-default argument follows default argument
Argumentos de palabras clave de Python
Cuando llamamos a una función con algunos valores, estos valores se asignan a los argumentos según su posición.
Por ejemplo, en la función anterior greet()
, cuando lo llamamos como greet("Bruce", "How do you do?")
, el valor "Bruce"
se asigna al argumento nombre y de manera similar "How do you do?"
a mensaje .
Python permite llamar a funciones usando argumentos de palabras clave. Cuando llamamos funciones de esta manera, el orden (posición) de los argumentos se puede cambiar. Las siguientes llamadas a la función anterior son todas válidas y producen el mismo resultado.
# 2 keyword arguments
greet(name = "Bruce",msg = "How do you do?")
# 2 keyword arguments (out of order)
greet(msg = "How do you do?",name = "Bruce")
1 positional, 1 keyword argument
greet("Bruce", msg = "How do you do?")
Como podemos ver, podemos mezclar argumentos posicionales con argumentos de palabras clave durante una llamada de función. Pero debemos tener en cuenta que los argumentos de palabras clave deben seguir a los argumentos posicionales.
Tener un argumento posicional después de los argumentos de palabras clave dará como resultado errores. Por ejemplo, la llamada de función de la siguiente manera:
greet(name="Bruce","How do you do?")
Dará como resultado un error:
SyntaxError: non-keyword arg after keyword arg
Argumentos arbitrarios de Python
A veces, no sabemos de antemano la cantidad de argumentos que se pasarán a una función. Python nos permite manejar este tipo de situaciones a través de llamadas a funciones con un número arbitrario de argumentos.
En la definición de la función, usamos un asterisco (*) antes del nombre del parámetro para indicar este tipo de argumento. Aquí hay un ejemplo.
def greet(*names):
"""This function greets all
the person in the names tuple."""
# names is a tuple with arguments
for name in names:
print("Hello", name)
greet("Monica", "Luke", "Steve", "John")
Salida
Hello Monica Hello Luke Hello Steve Hello John
Aquí, hemos llamado a la función con múltiples argumentos. Estos argumentos se envuelven en una tupla antes de pasar a la función. Dentro de la función, usamos un for
bucle para recuperar todos los argumentos.
python
- Tipos de datos de Python
- Operadores de Python
- Declaración de paso de Python
- Python Anónimo/Función Lambda
- Diccionario de Python
- Generadores de Python
- Cierres Python
- Decoradores de pitón
- Python String strip() Función con EJEMPLO
- Funciones Python Lambda con EJEMPLOS
- Función Python abs():Ejemplos de valores absolutos