A veces, necesitas especificar los argumentos de una función por su nombre, dejando claro qué representa cada argumento, sin importar su posición. En Python, estos argumentos se conocen como argumentos de palabra clave (keyword arguments). Los argumentos únicamente por palabra clave son similares, pero con una particularidad: sólo pueden proporcionarse mediante su palabra clave, nunca por posición.
Para definir una función con argumentos únicamente por palabra clave, utilizas el símbolo * en la firma de la función. Cualquier argumento que aparezca después de * sólo puede proporcionarse por su palabra clave.
Considera una función para calcular el área de un rectángulo. Requiere dos argumentos: length y width. Además, puede aceptar un argumento booleano opcional, rounded, para decidir si devolver el área exacta (con decimales) o el área redondeada (sin decimales). Queremos que rounded sea un argumento únicamente por palabra clave para evitar confusiones al llamar a la función:
def rectangle_area(length, width, *, rounded=False):
area = length * width
return round(area) if rounded else area
print(rectangle_area(5.3, 4.2)) # Imprime 22.26, rounded no se proporciona, por lo que toma el valor predeterminado False
print(rectangle_area(5.3, 4.2, rounded=True)) # Imprime 22, rounded se proporciona y se establece en True
print(rectangle_area(5.3, 4.2, True)) # ¡Error! rounded debe proporcionarse por palabra clave.
print(rectangle_area(5.3, 4.2, False)) # ¡Error! rounded debe proporcionarse por palabra clave.
print(rectangle_area(length=5.3, width=4.2, rounded=True)) # Imprime 22
Podemos llamar a esta función usando argumentos posicionales para length y width, y un argumento por palabra clave para rounded. Si alguien intenta proporcionar el tercer argumento por posición, ocurrirá un error.
Nota que aún puedes usar la sintaxis de palabra clave para los argumentos posicionales si lo deseas, ya que aquí no están definidos como únicamente posicionales.
Desafío: Repite el Texto
Tienes la tarea de escribir una función repeat_text que repita un texto especificado un cierto número de veces. La función debe tomar dos argumentos: text y times. El argumento text es la cadena de texto a repetir y times es el número de repeticiones.
El argumento times debe ser un argumento únicamente por palabra clave con un valor predeterminado de 1, lo que significa que si no se proporciona, la función debe devolver el texto original tal cual.
La función debe devolver una cadena que es el texto repetido times veces.
La primera línea de la entrada contiene una cadena text. La segunda línea contiene un entero times.
La función debe devolver una cadena que es el text repetido times veces.
Entrada
Salida
Hello World!
3
Hello World!Hello World!Hello World!
Nota: No hay espacios ni ningún otro delimitador entre los textos repetidos en la salida.