Menu iconMenu icon
Programación en Python Desbloqueada para Principiantes

5.2: Argumentos de funciones

En el tema anterior, introdujimos el concepto de funciones y cómo definirlas con parámetros de entrada. Sin embargo, para comprender completamente las funciones, es importante tener una mayor comprensión de los diferentes tipos de argumentos de funciones en Python.

Primero, hablemos de los argumentos posicionales. Estos son el tipo de argumento más común en las funciones de Python. Se llaman "posicionales" porque sus valores se asignan en función del orden en que se pasan los argumentos a la función. Por ejemplo, si una función tiene dos argumentos posicionales, el primer valor pasado se asignará al primer argumento y el segundo valor pasado se asignará al segundo argumento.

Ahora, pasemos a los argumentos de palabras clave. Estos argumentos se identifican por el nombre del parámetro en la definición de la función. Son útiles para hacer que el código sea más legible y para proporcionar valores predeterminados a los argumentos.

Otro tipo de argumento son los argumentos predeterminados. Estos argumentos tienen valores predeterminados asignados, por lo que si no se pasa un valor para ellos cuando se llama a la función, se utilizará el valor predeterminado. Esto es útil cuando una función se llama frecuentemente con el mismo valor y se desea evitar tener que pasar ese valor cada vez.

Finalmente, están los argumentos de longitud variable. Estos argumentos se denotan con un asterisco (*) antes del nombre del parámetro. Permiten que una función acepte un número arbitrario de argumentos. Esto es útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función.

En resumen, Python tiene cuatro tipos principales de argumentos de funciones: argumentos posicionales, argumentos de palabras clave, argumentos predeterminados y argumentos de longitud variable. Al comprender estos diferentes tipos de argumentos, podrás escribir funciones más flexibles y potentes que puedan manejar una variedad de entradas.

5.2.1: Argumentos posicionales:

Los argumentos posicionales son el tipo más común de argumentos de función. Se pasan a una función en el mismo orden en que están definidos en la función. El número de argumentos pasados a la función debe coincidir con el número de parámetros definidos.

A diferencia de otros tipos de argumentos de función, como los argumentos de palabra clave y los argumentos predeterminados, los argumentos posicionales son los más directos y utilizados. Son simples de entender y usar, ya que solo requieren pasar valores en un orden específico. Sin embargo, pueden plantear un desafío si el número de argumentos pasados a la función no coincide con el número de parámetros definidos. En tales casos, la función generará un TypeError, indicando que el número de argumentos esperados no coincide con el número de argumentos recibidos.

Una forma de evitar este problema es definir cuidadosamente el número de parámetros en la definición de la función y asegurarse de que el número de argumentos pasados a la función coincida con este número. Otra forma es utilizar otros tipos de argumentos de función, como argumentos de palabra clave o argumentos predeterminados, que proporcionan más flexibilidad en cuanto al número y orden de los argumentos pasados a la función. Sin embargo, estos tipos de argumentos pueden ser más complejos y requieren una comprensión y práctica adicional para usarlos de manera efectiva.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25, "New York")

Salida:

Alice is 25 years old and lives in New York.

5.2.2: Argumentos de palabra clave:

Los argumentos de palabra clave son una característica esencial de las funciones de Python. Te permiten pasar argumentos a una función utilizando nombres de parámetro, haciendo que el código sea más legible y fácil de entender. Esto es especialmente útil cuando las funciones tienen muchos argumentos y es difícil recordar el orden en el que deben pasarse.

Por ejemplo, supongamos que tienes una función que toma cinco argumentos y solo quieres pasar el 3er y 5to argumento. Con los argumentos de palabra clave, puedes hacerlo fácilmente especificando los nombres de parámetro para esos argumentos. De esta manera, no tienes que preocuparte por el orden en el que están definidos los argumentos en la función.

Otro beneficio de los argumentos de palabra clave es que hacen que la función sea más flexible. Puedes pasar argumentos en cualquier orden, independientemente de su posición en la función. Esto es particularmente útil cuando deseas reutilizar una función con diferentes valores de argumento y no deseas modificar el código de la función para acomodar los nuevos argumentos.

Los argumentos de palabra clave son una herramienta poderosa que puede ayudarte a escribir código más limpio y eficiente. Hacen que las funciones sean más legibles, flexibles y fáciles de usar, haciendo que tu trabajo como programador sea mucho más cómodo y agradable.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info(age=25, city="New York", name="Alice")

Salida:

Alice is 25 years old and lives in New York.

5.2.3: Argumentos predeterminados:

Los argumentos predeterminados tienen una característica importante que puede simplificar la implementación de funciones en muchos lenguajes de programación. Esta característica te permite asignar un valor predeterminado a un parámetro, haciéndolo opcional al llamar a la función. Al hacer esto, evitas la necesidad de definir e implementar múltiples funciones que realizan la misma operación con diferentes números de argumentos.

Esta característica es particularmente útil cuando una función se llama de muchas maneras diferentes, ya que te permite evitar tener que escribir muchas versiones diferentes de la misma función. Esto puede ahorrar mucho tiempo y hacer que tu código sea más fácil de mantener. Además, los argumentos predeterminados pueden hacer que tu código sea más legible al reducir la cantidad de declaraciones condicionales necesarias para manejar diferentes configuraciones de argumentos.

Por lo tanto, se recomienda usar argumentos predeterminados siempre que sea posible, especialmente cuando necesitas escribir funciones que puedan manejar una gran cantidad de configuraciones de argumentos. Si el llamador no proporciona un valor para el parámetro, se utilizará el valor predeterminado, asegurando que la función funcione correctamente incluso si el llamador olvida proporcionar todos los argumentos necesarios.

Ejemplo:

def person_info(name, age, city="Unknown"):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25)

Salida:

Alice is 25 years old and lives in Unknown.

5.2.4: Argumentos de longitud variable:

Los argumentos de longitud variable son una característica poderosa en los lenguajes de programación, ya que permiten pasar un número arbitrario de argumentos a una función. Esto significa que puedes escribir código más flexible y adaptable a diversos casos de uso. Esta característica se vuelve especialmente útil cuando no sabes el número exacto de argumentos que pasarás a una función.

En Python, puedes usar el asterisco (*) para tuplas, que se usan para pasar argumentos posicionales, y asteriscos dobles (**) para diccionarios, que se usan para pasar argumentos de palabra clave. Cuando uses argumentos de longitud variable, es importante tener en cuenta que puedes pasar tantos argumentos como quieras, pero debes asegurarte de que tu función pueda manejarlos todos.

En general, los argumentos de longitud variable son una herramienta esencial para cualquier programador, ya que proporcionan una forma de escribir código más flexible y adaptable, sin estar limitado por la cantidad de argumentos que una función puede aceptar.

Ejemplo:

def print_names(*names):
    for name in names:
        print(name)

print_names("Alice", "Bob", "Charlie", "David")

Salida:

Alice
Bob
Charlie
David

Para dominar el arte de escribir funciones flexibles y eficientes en Python, es crucial tener una comprensión sólida de los diversos tipos de argumentos de función. Ya sea que estés pasando argumentos predeterminados, argumentos de palabra clave o argumentos de longitud variable, cada tipo ofrece beneficios y compensaciones únicos que pueden afectar el rendimiento y la funcionalidad general de tu código.

En el siguiente tema, nos adentraremos más en el tema de devolver valores desde funciones. No solo exploraremos la sintaxis básica y la mecánica de devolver valores, sino que también examinaremos ejemplos del mundo real de cómo aprovechar los valores de retorno para mejorar la potencia y la versatilidad de tus funciones. Al final de este tema, tendrás una comprensión completa de cómo usar los valores de retorno para llevar tu código Python al siguiente nivel.

Ejercicio 5.2.1: Calculadora simple

Crea una calculadora simple que toma dos números y una operación aritmética como entrada y realiza la operación en los dos números.

Instrucciones:

  1. Define una función llamada simple_calculator que toma tres parámetros: num1num2 y operation.
  2. Usa una estructura if-elif-else para realizar la operación correspondiente según la entrada (suma, resta, multiplicación o división).
  3. Imprime el resultado de la operación.
  4. Llama a la función con diferentes argumentos para probar la calculadora.

Solución:

def simple_calculator(num1, num2, operation):
    if operation == "add":
        result = num1 + num2
    elif operation == "subtract":
        result = num1 - num2
    elif operation == "multiply":
        result = num1 * num2
    elif operation == "divide":
        result = num1 / num2
    else:
        result = "Invalid operation"
    print(result)

simple_calculator(5, 3, "add")
simple_calculator(5, 3, "subtract")
simple_calculator(5, 3, "multiply")
simple_calculator(5, 3, "divide")

Salida:

8
2
15
1.6666666666666667

Ejercicio 5.2.2: Saludo con argumento por defecto

Crea una función que salude a un usuario por su nombre. Si no se proporciona el nombre, la función debe saludar a un usuario genérico.

Instrucciones:

  1. Define una función llamada greet que tome un parámetro, name, con un valor predeterminado de "User".
  2. Imprime un mensaje de saludo que incluya el nombre.
  3. Llama a la función con un nombre y sin nombre para probar el argumento por defecto.

Solución:

def greet(name="User"):
    print(f"Hello, {name}!")

greet("Alice")
greet()

Salida:

Hello, Alice!
Hello, User!

Ejercicio 5.2.3: Suma de números con argumentos de longitud variable

Crea una función que calcule la suma de un número arbitrario de números pasados como argumentos.

Instrucciones:

  1. Define una función llamada sum_of_numbers que tome argumentos de longitud variable usando el asterisco (*).
  2. Inicializa una variable llamada total para almacenar la suma.
  3. Itera a través de los argumentos y agrega cada número al total.
  4. Imprime la suma total.
  5. Llama a la función con diferentes números de argumentos para probar los argumentos de longitud variable.

Solución:

def sum_of_numbers(*numbers):
    total = 0
    for number in numbers:
        total += number
    print(total)

sum_of_numbers(1, 2, 3, 4, 5)
sum_of_numbers(10, 20, 30)
sum_of_numbers(100, 200)

Salida:

15
60
300

5.2: Argumentos de funciones

En el tema anterior, introdujimos el concepto de funciones y cómo definirlas con parámetros de entrada. Sin embargo, para comprender completamente las funciones, es importante tener una mayor comprensión de los diferentes tipos de argumentos de funciones en Python.

Primero, hablemos de los argumentos posicionales. Estos son el tipo de argumento más común en las funciones de Python. Se llaman "posicionales" porque sus valores se asignan en función del orden en que se pasan los argumentos a la función. Por ejemplo, si una función tiene dos argumentos posicionales, el primer valor pasado se asignará al primer argumento y el segundo valor pasado se asignará al segundo argumento.

Ahora, pasemos a los argumentos de palabras clave. Estos argumentos se identifican por el nombre del parámetro en la definición de la función. Son útiles para hacer que el código sea más legible y para proporcionar valores predeterminados a los argumentos.

Otro tipo de argumento son los argumentos predeterminados. Estos argumentos tienen valores predeterminados asignados, por lo que si no se pasa un valor para ellos cuando se llama a la función, se utilizará el valor predeterminado. Esto es útil cuando una función se llama frecuentemente con el mismo valor y se desea evitar tener que pasar ese valor cada vez.

Finalmente, están los argumentos de longitud variable. Estos argumentos se denotan con un asterisco (*) antes del nombre del parámetro. Permiten que una función acepte un número arbitrario de argumentos. Esto es útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función.

En resumen, Python tiene cuatro tipos principales de argumentos de funciones: argumentos posicionales, argumentos de palabras clave, argumentos predeterminados y argumentos de longitud variable. Al comprender estos diferentes tipos de argumentos, podrás escribir funciones más flexibles y potentes que puedan manejar una variedad de entradas.

5.2.1: Argumentos posicionales:

Los argumentos posicionales son el tipo más común de argumentos de función. Se pasan a una función en el mismo orden en que están definidos en la función. El número de argumentos pasados a la función debe coincidir con el número de parámetros definidos.

A diferencia de otros tipos de argumentos de función, como los argumentos de palabra clave y los argumentos predeterminados, los argumentos posicionales son los más directos y utilizados. Son simples de entender y usar, ya que solo requieren pasar valores en un orden específico. Sin embargo, pueden plantear un desafío si el número de argumentos pasados a la función no coincide con el número de parámetros definidos. En tales casos, la función generará un TypeError, indicando que el número de argumentos esperados no coincide con el número de argumentos recibidos.

Una forma de evitar este problema es definir cuidadosamente el número de parámetros en la definición de la función y asegurarse de que el número de argumentos pasados a la función coincida con este número. Otra forma es utilizar otros tipos de argumentos de función, como argumentos de palabra clave o argumentos predeterminados, que proporcionan más flexibilidad en cuanto al número y orden de los argumentos pasados a la función. Sin embargo, estos tipos de argumentos pueden ser más complejos y requieren una comprensión y práctica adicional para usarlos de manera efectiva.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25, "New York")

Salida:

Alice is 25 years old and lives in New York.

5.2.2: Argumentos de palabra clave:

Los argumentos de palabra clave son una característica esencial de las funciones de Python. Te permiten pasar argumentos a una función utilizando nombres de parámetro, haciendo que el código sea más legible y fácil de entender. Esto es especialmente útil cuando las funciones tienen muchos argumentos y es difícil recordar el orden en el que deben pasarse.

Por ejemplo, supongamos que tienes una función que toma cinco argumentos y solo quieres pasar el 3er y 5to argumento. Con los argumentos de palabra clave, puedes hacerlo fácilmente especificando los nombres de parámetro para esos argumentos. De esta manera, no tienes que preocuparte por el orden en el que están definidos los argumentos en la función.

Otro beneficio de los argumentos de palabra clave es que hacen que la función sea más flexible. Puedes pasar argumentos en cualquier orden, independientemente de su posición en la función. Esto es particularmente útil cuando deseas reutilizar una función con diferentes valores de argumento y no deseas modificar el código de la función para acomodar los nuevos argumentos.

Los argumentos de palabra clave son una herramienta poderosa que puede ayudarte a escribir código más limpio y eficiente. Hacen que las funciones sean más legibles, flexibles y fáciles de usar, haciendo que tu trabajo como programador sea mucho más cómodo y agradable.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info(age=25, city="New York", name="Alice")

Salida:

Alice is 25 years old and lives in New York.

5.2.3: Argumentos predeterminados:

Los argumentos predeterminados tienen una característica importante que puede simplificar la implementación de funciones en muchos lenguajes de programación. Esta característica te permite asignar un valor predeterminado a un parámetro, haciéndolo opcional al llamar a la función. Al hacer esto, evitas la necesidad de definir e implementar múltiples funciones que realizan la misma operación con diferentes números de argumentos.

Esta característica es particularmente útil cuando una función se llama de muchas maneras diferentes, ya que te permite evitar tener que escribir muchas versiones diferentes de la misma función. Esto puede ahorrar mucho tiempo y hacer que tu código sea más fácil de mantener. Además, los argumentos predeterminados pueden hacer que tu código sea más legible al reducir la cantidad de declaraciones condicionales necesarias para manejar diferentes configuraciones de argumentos.

Por lo tanto, se recomienda usar argumentos predeterminados siempre que sea posible, especialmente cuando necesitas escribir funciones que puedan manejar una gran cantidad de configuraciones de argumentos. Si el llamador no proporciona un valor para el parámetro, se utilizará el valor predeterminado, asegurando que la función funcione correctamente incluso si el llamador olvida proporcionar todos los argumentos necesarios.

Ejemplo:

def person_info(name, age, city="Unknown"):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25)

Salida:

Alice is 25 years old and lives in Unknown.

5.2.4: Argumentos de longitud variable:

Los argumentos de longitud variable son una característica poderosa en los lenguajes de programación, ya que permiten pasar un número arbitrario de argumentos a una función. Esto significa que puedes escribir código más flexible y adaptable a diversos casos de uso. Esta característica se vuelve especialmente útil cuando no sabes el número exacto de argumentos que pasarás a una función.

En Python, puedes usar el asterisco (*) para tuplas, que se usan para pasar argumentos posicionales, y asteriscos dobles (**) para diccionarios, que se usan para pasar argumentos de palabra clave. Cuando uses argumentos de longitud variable, es importante tener en cuenta que puedes pasar tantos argumentos como quieras, pero debes asegurarte de que tu función pueda manejarlos todos.

En general, los argumentos de longitud variable son una herramienta esencial para cualquier programador, ya que proporcionan una forma de escribir código más flexible y adaptable, sin estar limitado por la cantidad de argumentos que una función puede aceptar.

Ejemplo:

def print_names(*names):
    for name in names:
        print(name)

print_names("Alice", "Bob", "Charlie", "David")

Salida:

Alice
Bob
Charlie
David

Para dominar el arte de escribir funciones flexibles y eficientes en Python, es crucial tener una comprensión sólida de los diversos tipos de argumentos de función. Ya sea que estés pasando argumentos predeterminados, argumentos de palabra clave o argumentos de longitud variable, cada tipo ofrece beneficios y compensaciones únicos que pueden afectar el rendimiento y la funcionalidad general de tu código.

En el siguiente tema, nos adentraremos más en el tema de devolver valores desde funciones. No solo exploraremos la sintaxis básica y la mecánica de devolver valores, sino que también examinaremos ejemplos del mundo real de cómo aprovechar los valores de retorno para mejorar la potencia y la versatilidad de tus funciones. Al final de este tema, tendrás una comprensión completa de cómo usar los valores de retorno para llevar tu código Python al siguiente nivel.

Ejercicio 5.2.1: Calculadora simple

Crea una calculadora simple que toma dos números y una operación aritmética como entrada y realiza la operación en los dos números.

Instrucciones:

  1. Define una función llamada simple_calculator que toma tres parámetros: num1num2 y operation.
  2. Usa una estructura if-elif-else para realizar la operación correspondiente según la entrada (suma, resta, multiplicación o división).
  3. Imprime el resultado de la operación.
  4. Llama a la función con diferentes argumentos para probar la calculadora.

Solución:

def simple_calculator(num1, num2, operation):
    if operation == "add":
        result = num1 + num2
    elif operation == "subtract":
        result = num1 - num2
    elif operation == "multiply":
        result = num1 * num2
    elif operation == "divide":
        result = num1 / num2
    else:
        result = "Invalid operation"
    print(result)

simple_calculator(5, 3, "add")
simple_calculator(5, 3, "subtract")
simple_calculator(5, 3, "multiply")
simple_calculator(5, 3, "divide")

Salida:

8
2
15
1.6666666666666667

Ejercicio 5.2.2: Saludo con argumento por defecto

Crea una función que salude a un usuario por su nombre. Si no se proporciona el nombre, la función debe saludar a un usuario genérico.

Instrucciones:

  1. Define una función llamada greet que tome un parámetro, name, con un valor predeterminado de "User".
  2. Imprime un mensaje de saludo que incluya el nombre.
  3. Llama a la función con un nombre y sin nombre para probar el argumento por defecto.

Solución:

def greet(name="User"):
    print(f"Hello, {name}!")

greet("Alice")
greet()

Salida:

Hello, Alice!
Hello, User!

Ejercicio 5.2.3: Suma de números con argumentos de longitud variable

Crea una función que calcule la suma de un número arbitrario de números pasados como argumentos.

Instrucciones:

  1. Define una función llamada sum_of_numbers que tome argumentos de longitud variable usando el asterisco (*).
  2. Inicializa una variable llamada total para almacenar la suma.
  3. Itera a través de los argumentos y agrega cada número al total.
  4. Imprime la suma total.
  5. Llama a la función con diferentes números de argumentos para probar los argumentos de longitud variable.

Solución:

def sum_of_numbers(*numbers):
    total = 0
    for number in numbers:
        total += number
    print(total)

sum_of_numbers(1, 2, 3, 4, 5)
sum_of_numbers(10, 20, 30)
sum_of_numbers(100, 200)

Salida:

15
60
300

5.2: Argumentos de funciones

En el tema anterior, introdujimos el concepto de funciones y cómo definirlas con parámetros de entrada. Sin embargo, para comprender completamente las funciones, es importante tener una mayor comprensión de los diferentes tipos de argumentos de funciones en Python.

Primero, hablemos de los argumentos posicionales. Estos son el tipo de argumento más común en las funciones de Python. Se llaman "posicionales" porque sus valores se asignan en función del orden en que se pasan los argumentos a la función. Por ejemplo, si una función tiene dos argumentos posicionales, el primer valor pasado se asignará al primer argumento y el segundo valor pasado se asignará al segundo argumento.

Ahora, pasemos a los argumentos de palabras clave. Estos argumentos se identifican por el nombre del parámetro en la definición de la función. Son útiles para hacer que el código sea más legible y para proporcionar valores predeterminados a los argumentos.

Otro tipo de argumento son los argumentos predeterminados. Estos argumentos tienen valores predeterminados asignados, por lo que si no se pasa un valor para ellos cuando se llama a la función, se utilizará el valor predeterminado. Esto es útil cuando una función se llama frecuentemente con el mismo valor y se desea evitar tener que pasar ese valor cada vez.

Finalmente, están los argumentos de longitud variable. Estos argumentos se denotan con un asterisco (*) antes del nombre del parámetro. Permiten que una función acepte un número arbitrario de argumentos. Esto es útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función.

En resumen, Python tiene cuatro tipos principales de argumentos de funciones: argumentos posicionales, argumentos de palabras clave, argumentos predeterminados y argumentos de longitud variable. Al comprender estos diferentes tipos de argumentos, podrás escribir funciones más flexibles y potentes que puedan manejar una variedad de entradas.

5.2.1: Argumentos posicionales:

Los argumentos posicionales son el tipo más común de argumentos de función. Se pasan a una función en el mismo orden en que están definidos en la función. El número de argumentos pasados a la función debe coincidir con el número de parámetros definidos.

A diferencia de otros tipos de argumentos de función, como los argumentos de palabra clave y los argumentos predeterminados, los argumentos posicionales son los más directos y utilizados. Son simples de entender y usar, ya que solo requieren pasar valores en un orden específico. Sin embargo, pueden plantear un desafío si el número de argumentos pasados a la función no coincide con el número de parámetros definidos. En tales casos, la función generará un TypeError, indicando que el número de argumentos esperados no coincide con el número de argumentos recibidos.

Una forma de evitar este problema es definir cuidadosamente el número de parámetros en la definición de la función y asegurarse de que el número de argumentos pasados a la función coincida con este número. Otra forma es utilizar otros tipos de argumentos de función, como argumentos de palabra clave o argumentos predeterminados, que proporcionan más flexibilidad en cuanto al número y orden de los argumentos pasados a la función. Sin embargo, estos tipos de argumentos pueden ser más complejos y requieren una comprensión y práctica adicional para usarlos de manera efectiva.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25, "New York")

Salida:

Alice is 25 years old and lives in New York.

5.2.2: Argumentos de palabra clave:

Los argumentos de palabra clave son una característica esencial de las funciones de Python. Te permiten pasar argumentos a una función utilizando nombres de parámetro, haciendo que el código sea más legible y fácil de entender. Esto es especialmente útil cuando las funciones tienen muchos argumentos y es difícil recordar el orden en el que deben pasarse.

Por ejemplo, supongamos que tienes una función que toma cinco argumentos y solo quieres pasar el 3er y 5to argumento. Con los argumentos de palabra clave, puedes hacerlo fácilmente especificando los nombres de parámetro para esos argumentos. De esta manera, no tienes que preocuparte por el orden en el que están definidos los argumentos en la función.

Otro beneficio de los argumentos de palabra clave es que hacen que la función sea más flexible. Puedes pasar argumentos en cualquier orden, independientemente de su posición en la función. Esto es particularmente útil cuando deseas reutilizar una función con diferentes valores de argumento y no deseas modificar el código de la función para acomodar los nuevos argumentos.

Los argumentos de palabra clave son una herramienta poderosa que puede ayudarte a escribir código más limpio y eficiente. Hacen que las funciones sean más legibles, flexibles y fáciles de usar, haciendo que tu trabajo como programador sea mucho más cómodo y agradable.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info(age=25, city="New York", name="Alice")

Salida:

Alice is 25 years old and lives in New York.

5.2.3: Argumentos predeterminados:

Los argumentos predeterminados tienen una característica importante que puede simplificar la implementación de funciones en muchos lenguajes de programación. Esta característica te permite asignar un valor predeterminado a un parámetro, haciéndolo opcional al llamar a la función. Al hacer esto, evitas la necesidad de definir e implementar múltiples funciones que realizan la misma operación con diferentes números de argumentos.

Esta característica es particularmente útil cuando una función se llama de muchas maneras diferentes, ya que te permite evitar tener que escribir muchas versiones diferentes de la misma función. Esto puede ahorrar mucho tiempo y hacer que tu código sea más fácil de mantener. Además, los argumentos predeterminados pueden hacer que tu código sea más legible al reducir la cantidad de declaraciones condicionales necesarias para manejar diferentes configuraciones de argumentos.

Por lo tanto, se recomienda usar argumentos predeterminados siempre que sea posible, especialmente cuando necesitas escribir funciones que puedan manejar una gran cantidad de configuraciones de argumentos. Si el llamador no proporciona un valor para el parámetro, se utilizará el valor predeterminado, asegurando que la función funcione correctamente incluso si el llamador olvida proporcionar todos los argumentos necesarios.

Ejemplo:

def person_info(name, age, city="Unknown"):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25)

Salida:

Alice is 25 years old and lives in Unknown.

5.2.4: Argumentos de longitud variable:

Los argumentos de longitud variable son una característica poderosa en los lenguajes de programación, ya que permiten pasar un número arbitrario de argumentos a una función. Esto significa que puedes escribir código más flexible y adaptable a diversos casos de uso. Esta característica se vuelve especialmente útil cuando no sabes el número exacto de argumentos que pasarás a una función.

En Python, puedes usar el asterisco (*) para tuplas, que se usan para pasar argumentos posicionales, y asteriscos dobles (**) para diccionarios, que se usan para pasar argumentos de palabra clave. Cuando uses argumentos de longitud variable, es importante tener en cuenta que puedes pasar tantos argumentos como quieras, pero debes asegurarte de que tu función pueda manejarlos todos.

En general, los argumentos de longitud variable son una herramienta esencial para cualquier programador, ya que proporcionan una forma de escribir código más flexible y adaptable, sin estar limitado por la cantidad de argumentos que una función puede aceptar.

Ejemplo:

def print_names(*names):
    for name in names:
        print(name)

print_names("Alice", "Bob", "Charlie", "David")

Salida:

Alice
Bob
Charlie
David

Para dominar el arte de escribir funciones flexibles y eficientes en Python, es crucial tener una comprensión sólida de los diversos tipos de argumentos de función. Ya sea que estés pasando argumentos predeterminados, argumentos de palabra clave o argumentos de longitud variable, cada tipo ofrece beneficios y compensaciones únicos que pueden afectar el rendimiento y la funcionalidad general de tu código.

En el siguiente tema, nos adentraremos más en el tema de devolver valores desde funciones. No solo exploraremos la sintaxis básica y la mecánica de devolver valores, sino que también examinaremos ejemplos del mundo real de cómo aprovechar los valores de retorno para mejorar la potencia y la versatilidad de tus funciones. Al final de este tema, tendrás una comprensión completa de cómo usar los valores de retorno para llevar tu código Python al siguiente nivel.

Ejercicio 5.2.1: Calculadora simple

Crea una calculadora simple que toma dos números y una operación aritmética como entrada y realiza la operación en los dos números.

Instrucciones:

  1. Define una función llamada simple_calculator que toma tres parámetros: num1num2 y operation.
  2. Usa una estructura if-elif-else para realizar la operación correspondiente según la entrada (suma, resta, multiplicación o división).
  3. Imprime el resultado de la operación.
  4. Llama a la función con diferentes argumentos para probar la calculadora.

Solución:

def simple_calculator(num1, num2, operation):
    if operation == "add":
        result = num1 + num2
    elif operation == "subtract":
        result = num1 - num2
    elif operation == "multiply":
        result = num1 * num2
    elif operation == "divide":
        result = num1 / num2
    else:
        result = "Invalid operation"
    print(result)

simple_calculator(5, 3, "add")
simple_calculator(5, 3, "subtract")
simple_calculator(5, 3, "multiply")
simple_calculator(5, 3, "divide")

Salida:

8
2
15
1.6666666666666667

Ejercicio 5.2.2: Saludo con argumento por defecto

Crea una función que salude a un usuario por su nombre. Si no se proporciona el nombre, la función debe saludar a un usuario genérico.

Instrucciones:

  1. Define una función llamada greet que tome un parámetro, name, con un valor predeterminado de "User".
  2. Imprime un mensaje de saludo que incluya el nombre.
  3. Llama a la función con un nombre y sin nombre para probar el argumento por defecto.

Solución:

def greet(name="User"):
    print(f"Hello, {name}!")

greet("Alice")
greet()

Salida:

Hello, Alice!
Hello, User!

Ejercicio 5.2.3: Suma de números con argumentos de longitud variable

Crea una función que calcule la suma de un número arbitrario de números pasados como argumentos.

Instrucciones:

  1. Define una función llamada sum_of_numbers que tome argumentos de longitud variable usando el asterisco (*).
  2. Inicializa una variable llamada total para almacenar la suma.
  3. Itera a través de los argumentos y agrega cada número al total.
  4. Imprime la suma total.
  5. Llama a la función con diferentes números de argumentos para probar los argumentos de longitud variable.

Solución:

def sum_of_numbers(*numbers):
    total = 0
    for number in numbers:
        total += number
    print(total)

sum_of_numbers(1, 2, 3, 4, 5)
sum_of_numbers(10, 20, 30)
sum_of_numbers(100, 200)

Salida:

15
60
300

5.2: Argumentos de funciones

En el tema anterior, introdujimos el concepto de funciones y cómo definirlas con parámetros de entrada. Sin embargo, para comprender completamente las funciones, es importante tener una mayor comprensión de los diferentes tipos de argumentos de funciones en Python.

Primero, hablemos de los argumentos posicionales. Estos son el tipo de argumento más común en las funciones de Python. Se llaman "posicionales" porque sus valores se asignan en función del orden en que se pasan los argumentos a la función. Por ejemplo, si una función tiene dos argumentos posicionales, el primer valor pasado se asignará al primer argumento y el segundo valor pasado se asignará al segundo argumento.

Ahora, pasemos a los argumentos de palabras clave. Estos argumentos se identifican por el nombre del parámetro en la definición de la función. Son útiles para hacer que el código sea más legible y para proporcionar valores predeterminados a los argumentos.

Otro tipo de argumento son los argumentos predeterminados. Estos argumentos tienen valores predeterminados asignados, por lo que si no se pasa un valor para ellos cuando se llama a la función, se utilizará el valor predeterminado. Esto es útil cuando una función se llama frecuentemente con el mismo valor y se desea evitar tener que pasar ese valor cada vez.

Finalmente, están los argumentos de longitud variable. Estos argumentos se denotan con un asterisco (*) antes del nombre del parámetro. Permiten que una función acepte un número arbitrario de argumentos. Esto es útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función.

En resumen, Python tiene cuatro tipos principales de argumentos de funciones: argumentos posicionales, argumentos de palabras clave, argumentos predeterminados y argumentos de longitud variable. Al comprender estos diferentes tipos de argumentos, podrás escribir funciones más flexibles y potentes que puedan manejar una variedad de entradas.

5.2.1: Argumentos posicionales:

Los argumentos posicionales son el tipo más común de argumentos de función. Se pasan a una función en el mismo orden en que están definidos en la función. El número de argumentos pasados a la función debe coincidir con el número de parámetros definidos.

A diferencia de otros tipos de argumentos de función, como los argumentos de palabra clave y los argumentos predeterminados, los argumentos posicionales son los más directos y utilizados. Son simples de entender y usar, ya que solo requieren pasar valores en un orden específico. Sin embargo, pueden plantear un desafío si el número de argumentos pasados a la función no coincide con el número de parámetros definidos. En tales casos, la función generará un TypeError, indicando que el número de argumentos esperados no coincide con el número de argumentos recibidos.

Una forma de evitar este problema es definir cuidadosamente el número de parámetros en la definición de la función y asegurarse de que el número de argumentos pasados a la función coincida con este número. Otra forma es utilizar otros tipos de argumentos de función, como argumentos de palabra clave o argumentos predeterminados, que proporcionan más flexibilidad en cuanto al número y orden de los argumentos pasados a la función. Sin embargo, estos tipos de argumentos pueden ser más complejos y requieren una comprensión y práctica adicional para usarlos de manera efectiva.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25, "New York")

Salida:

Alice is 25 years old and lives in New York.

5.2.2: Argumentos de palabra clave:

Los argumentos de palabra clave son una característica esencial de las funciones de Python. Te permiten pasar argumentos a una función utilizando nombres de parámetro, haciendo que el código sea más legible y fácil de entender. Esto es especialmente útil cuando las funciones tienen muchos argumentos y es difícil recordar el orden en el que deben pasarse.

Por ejemplo, supongamos que tienes una función que toma cinco argumentos y solo quieres pasar el 3er y 5to argumento. Con los argumentos de palabra clave, puedes hacerlo fácilmente especificando los nombres de parámetro para esos argumentos. De esta manera, no tienes que preocuparte por el orden en el que están definidos los argumentos en la función.

Otro beneficio de los argumentos de palabra clave es que hacen que la función sea más flexible. Puedes pasar argumentos en cualquier orden, independientemente de su posición en la función. Esto es particularmente útil cuando deseas reutilizar una función con diferentes valores de argumento y no deseas modificar el código de la función para acomodar los nuevos argumentos.

Los argumentos de palabra clave son una herramienta poderosa que puede ayudarte a escribir código más limpio y eficiente. Hacen que las funciones sean más legibles, flexibles y fáciles de usar, haciendo que tu trabajo como programador sea mucho más cómodo y agradable.

Ejemplo:

def person_info(name, age, city):
    print(f"{name} is {age} years old and lives in {city}.")

person_info(age=25, city="New York", name="Alice")

Salida:

Alice is 25 years old and lives in New York.

5.2.3: Argumentos predeterminados:

Los argumentos predeterminados tienen una característica importante que puede simplificar la implementación de funciones en muchos lenguajes de programación. Esta característica te permite asignar un valor predeterminado a un parámetro, haciéndolo opcional al llamar a la función. Al hacer esto, evitas la necesidad de definir e implementar múltiples funciones que realizan la misma operación con diferentes números de argumentos.

Esta característica es particularmente útil cuando una función se llama de muchas maneras diferentes, ya que te permite evitar tener que escribir muchas versiones diferentes de la misma función. Esto puede ahorrar mucho tiempo y hacer que tu código sea más fácil de mantener. Además, los argumentos predeterminados pueden hacer que tu código sea más legible al reducir la cantidad de declaraciones condicionales necesarias para manejar diferentes configuraciones de argumentos.

Por lo tanto, se recomienda usar argumentos predeterminados siempre que sea posible, especialmente cuando necesitas escribir funciones que puedan manejar una gran cantidad de configuraciones de argumentos. Si el llamador no proporciona un valor para el parámetro, se utilizará el valor predeterminado, asegurando que la función funcione correctamente incluso si el llamador olvida proporcionar todos los argumentos necesarios.

Ejemplo:

def person_info(name, age, city="Unknown"):
    print(f"{name} is {age} years old and lives in {city}.")

person_info("Alice", 25)

Salida:

Alice is 25 years old and lives in Unknown.

5.2.4: Argumentos de longitud variable:

Los argumentos de longitud variable son una característica poderosa en los lenguajes de programación, ya que permiten pasar un número arbitrario de argumentos a una función. Esto significa que puedes escribir código más flexible y adaptable a diversos casos de uso. Esta característica se vuelve especialmente útil cuando no sabes el número exacto de argumentos que pasarás a una función.

En Python, puedes usar el asterisco (*) para tuplas, que se usan para pasar argumentos posicionales, y asteriscos dobles (**) para diccionarios, que se usan para pasar argumentos de palabra clave. Cuando uses argumentos de longitud variable, es importante tener en cuenta que puedes pasar tantos argumentos como quieras, pero debes asegurarte de que tu función pueda manejarlos todos.

En general, los argumentos de longitud variable son una herramienta esencial para cualquier programador, ya que proporcionan una forma de escribir código más flexible y adaptable, sin estar limitado por la cantidad de argumentos que una función puede aceptar.

Ejemplo:

def print_names(*names):
    for name in names:
        print(name)

print_names("Alice", "Bob", "Charlie", "David")

Salida:

Alice
Bob
Charlie
David

Para dominar el arte de escribir funciones flexibles y eficientes en Python, es crucial tener una comprensión sólida de los diversos tipos de argumentos de función. Ya sea que estés pasando argumentos predeterminados, argumentos de palabra clave o argumentos de longitud variable, cada tipo ofrece beneficios y compensaciones únicos que pueden afectar el rendimiento y la funcionalidad general de tu código.

En el siguiente tema, nos adentraremos más en el tema de devolver valores desde funciones. No solo exploraremos la sintaxis básica y la mecánica de devolver valores, sino que también examinaremos ejemplos del mundo real de cómo aprovechar los valores de retorno para mejorar la potencia y la versatilidad de tus funciones. Al final de este tema, tendrás una comprensión completa de cómo usar los valores de retorno para llevar tu código Python al siguiente nivel.

Ejercicio 5.2.1: Calculadora simple

Crea una calculadora simple que toma dos números y una operación aritmética como entrada y realiza la operación en los dos números.

Instrucciones:

  1. Define una función llamada simple_calculator que toma tres parámetros: num1num2 y operation.
  2. Usa una estructura if-elif-else para realizar la operación correspondiente según la entrada (suma, resta, multiplicación o división).
  3. Imprime el resultado de la operación.
  4. Llama a la función con diferentes argumentos para probar la calculadora.

Solución:

def simple_calculator(num1, num2, operation):
    if operation == "add":
        result = num1 + num2
    elif operation == "subtract":
        result = num1 - num2
    elif operation == "multiply":
        result = num1 * num2
    elif operation == "divide":
        result = num1 / num2
    else:
        result = "Invalid operation"
    print(result)

simple_calculator(5, 3, "add")
simple_calculator(5, 3, "subtract")
simple_calculator(5, 3, "multiply")
simple_calculator(5, 3, "divide")

Salida:

8
2
15
1.6666666666666667

Ejercicio 5.2.2: Saludo con argumento por defecto

Crea una función que salude a un usuario por su nombre. Si no se proporciona el nombre, la función debe saludar a un usuario genérico.

Instrucciones:

  1. Define una función llamada greet que tome un parámetro, name, con un valor predeterminado de "User".
  2. Imprime un mensaje de saludo que incluya el nombre.
  3. Llama a la función con un nombre y sin nombre para probar el argumento por defecto.

Solución:

def greet(name="User"):
    print(f"Hello, {name}!")

greet("Alice")
greet()

Salida:

Hello, Alice!
Hello, User!

Ejercicio 5.2.3: Suma de números con argumentos de longitud variable

Crea una función que calcule la suma de un número arbitrario de números pasados como argumentos.

Instrucciones:

  1. Define una función llamada sum_of_numbers que tome argumentos de longitud variable usando el asterisco (*).
  2. Inicializa una variable llamada total para almacenar la suma.
  3. Itera a través de los argumentos y agrega cada número al total.
  4. Imprime la suma total.
  5. Llama a la función con diferentes números de argumentos para probar los argumentos de longitud variable.

Solución:

def sum_of_numbers(*numbers):
    total = 0
    for number in numbers:
        total += number
    print(total)

sum_of_numbers(1, 2, 3, 4, 5)
sum_of_numbers(10, 20, 30)
sum_of_numbers(100, 200)

Salida:

15
60
300