Logotipo de Zephyrnet

Una guía completa de argumentos de funciones de Python

Fecha:

Introducción

Las funciones de Python son una parte esencial de cualquier lenguaje de programación y nos permiten encapsular bloques de código reutilizables. Un aspecto crucial de las funciones es la capacidad de pasar argumentos, que son valores que proporcionamos a la función para que funcione. En esta guía definitiva, exploraremos los distintos tipos de argumentos de funciones en Python y aprenderemos cómo usarlos de manera efectiva.

Argumentos de la función Python

Comprender los argumentos de las funciones de Python

Los argumentos de las funciones de Python desempeñan un papel crucial en la creación de código flexible y eficiente. Con argumentos posicionales, de palabras clave y predeterminados, los desarrolladores pueden adaptar funciones a diversas necesidades. Los argumentos de una función son los valores que pasamos a una función cuando la llamamos. Estos argumentos proporcionan las entradas necesarias para que la función realice su tarea. Python admite diferentes tipos de argumentos de funciones, incluidos argumentos posicionales, argumentos de palabras clave y argumentos arbitrarios.

Argumentos posicionales

Los argumentos posicionales son el tipo más básico de argumentos de funciones de Python. Se definen en la firma de la función y se pasan en el orden en que se definen. Exploremos diferentes aspectos de los argumentos posicionales.

Argumento posicional único

Una función puede tener uno o más argumentos posicionales. Un argumento posicional único se define especificando su nombre en la firma de la función. Por ejemplo

Código:

def greet(name):

    print(f"Hello, {name}!")

greet("Alice")

En este ejemplo, la función "saludar" toma un único argumento posicional, "nombre". Cuando llamamos a la función con el argumento `”Alice”`, imprime “¡Hola, Alice!”.

Múltiples argumentos posicionales

Una función también puede tener múltiples argumentos posicionales. Estos argumentos están separados por comas en la firma de la función. Por ejemplo:

Código:

def add_numbers(a, b):

    return a + b

result = add_numbers(3, 5)

En este ejemplo, la función `add_numbers` toma dos argumentos posicionales, `a` y `b`. Cuando llamamos a la función con los argumentos "3" y "5", devuelve la suma de los dos números: "8".

Valores predeterminados para argumentos posicionales

Python nos permite asignar valores predeterminados a argumentos posicionales. Estos valores predeterminados se utilizan cuando la persona que llama no proporciona un valor para el argumento. Por ejemplo:

Código:

def greet(name="World"):

    print(f"Hello, {name}!")

greet()  # Output: Hello, World!

greet("Alice")  # Output: Hello, Alice!

En este ejemplo, la función `saludar` tiene un argumento posicional `nombre` con un valor predeterminado de `”Mundo”`. Cuando llamamos a la función sin argumentos, utiliza el valor predeterminado e imprime "¡Hola, mundo!". Si proporcionamos un argumento, como "Alice", utiliza el valor proporcionado e imprime "¡Hola, Alice!".

Desentrañando argumentos posicionales

Python proporciona una manera de descomprimir una lista o tupla y pasar sus elementos como argumentos posicionales a una función. Esto es útil cuando tenemos una colección de valores que queremos pasar como argumentos separados. Por ejemplo:

Código:

def add_numbers(a, b):

    return a + b

numbers = [3, 5]

result = add_numbers(*numbers)

En este ejemplo, tenemos una lista de "números" que contiene los valores "[3, 5]". Usando el operador `*` antes de la lista, descomprimimos sus elementos y los pasamos como argumentos posicionales a la función `add_numbers`. El resultado es "8", la suma de "3" y "5".

Argumentos de palabras clave

Los argumentos de palabras clave son otro tipo de argumento de función en Python. A diferencia de los argumentos posicionales, los argumentos de palabras clave se identifican por sus nombres en lugar de por sus posiciones. Exploremos diferentes aspectos de los argumentos de palabras clave.

Argumento de palabra clave única

Una función puede tener uno o más argumentos de palabras clave. Un argumento de palabra clave única se define especificando su nombre y valor predeterminado en la firma de la función. Por ejemplo:

Código:

def greet(name="World"):

    print(f"Hello, {name}!")

greet()  # Output: Hello, World!

greet(name="Alice")  # Output: Hello, Alice!

En este ejemplo, la función `saludar` tiene un argumento de palabra clave `nombre` con un valor predeterminado de `”Mundo”`. Podemos llamar a la función sin ningún argumento y utiliza el valor predeterminado. Alternativamente, podemos proporcionar un valor para el argumento `nombre` explícitamente usando su nombre.

Múltiples argumentos de palabras clave

Una función puede tener varios argumentos de palabras clave. Estos argumentos se definen especificando sus nombres y valores predeterminados en la firma de la función. Por ejemplo:

Código:

def calculate_area(length=1, width=1):

    return length * width

area = calculate_area(length=5, width=3)

En este ejemplo, la función "calcular_area" tiene dos argumentos de palabras clave, "longitud" y "ancho", con valores predeterminados de "1". Podemos llamar a la función y proporcionar explícitamente valores para estos argumentos usando sus nombres. El resultado es "15", el producto de "5" y "3".

Valores predeterminados para argumentos de palabras clave

De manera similar a los argumentos posicionales, podemos asignar valores predeterminados a los argumentos de palabras clave. Estos valores predeterminados se utilizan cuando la persona que llama no proporciona un valor para el argumento. Por ejemplo:

Código:

def greet(name="World"):

    print(f"Hello, {name}!")

greet()  # Output: Hello, World!

greet(name="Alice")  # Output: Hello, Alice!

En este ejemplo, la función `saludar` tiene un argumento de palabra clave `nombre` con un valor predeterminado de `”Mundo”`. Cuando llamamos a la función sin argumentos, utiliza el valor predeterminado e imprime "¡Hola, mundo!". Si proporcionamos un argumento, como `”Alice”,` utiliza el valor proporcionado e imprime “¡Hola, Alice!”.

Desempaquetando argumentos de palabras clave

Python proporciona una manera de descomprimir un diccionario y pasar sus pares clave-valor como argumentos de palabras clave a una función. Esto es útil cuando tenemos una colección de valores que queremos pasar como argumentos de palabras clave separados. Por ejemplo:

Código:

def greet(name):

    print(f"Hello, {name}!")

person = {"name": "Alice"}

greet(**person)

En este ejemplo, tenemos un diccionario `persona` que contiene el par clave-valor `{“nombre”: “Alice”}.` Usando el operador `**` antes del diccionario, descomprimimos sus pares clave-valor y los pasamos como argumentos de palabras clave para la función "saludar". El resultado es "¡Hola, Alice!".

Argumentos arbitrarios

Python nos permite definir funciones que pueden aceptar un número variable de argumentos. Estos se conocen como argumentos arbitrarios y son útiles cuando necesitamos saber cuántos argumentos se pasarán a la función. Hay dos tipos de argumentos arbitrarios: `*args` para argumentos posicionales de longitud variable y `**kwargs` para argumentos de palabras clave de longitud variable.

*args: Argumentos posicionales de longitud variable

La sintaxis `*args` nos permite pasar un número variable de argumentos posicionales a una función. Los argumentos se recopilan en una tupla, a la que se puede acceder desde la función. Veamos un ejemplo:

Código:

def add_numbers(*args):

    total = 0

    for num in args:

        total += num

    return total

result = add_numbers(1, 2, 3, 4, 5)

En este ejemplo, la función `add_numbers` acepta cualquier número de argumentos posicionales usando la sintaxis `*args`. Los argumentos "1, 2, 3, 4, 5" se recopilan en una tupla "args". Luego iteramos sobre la tupla y calculamos la suma de todos los números: "15".

**kwargs: argumentos de palabras clave de longitud variable

La sintaxis `**kwargs` nos permite pasar un número variable de argumentos de palabras clave a una función. Los argumentos se recopilan en un diccionario, al que se puede acceder desde la función. Veamos un ejemplo:

Código:

def greet(**kwargs):

    for key, value in kwargs.items():

        print(f"{key}: {value}")

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

En este ejemplo, la función `greet` acepta cualquier número de argumentos de palabras clave usando la sintaxis `**kwargs`. Los argumentos `”nombre”: “Alice”, `”edad”: 25` y `”ciudad”: “Nueva York”` se recopilan en un diccionario `kwargs`. Luego iteramos sobre el diccionario e imprimimos cada clave. -par de valores.

Mezclar diferentes tipos de argumentos

Python nos permite mezclar diferentes tipos de argumentos en una función. Podemos tener argumentos posicionales, de palabras clave y arbitrarios en la misma firma de función. Exploremos algunos ejemplos.

Argumentos posicionales con argumentos de palabras clave

Una función puede tener argumentos posicionales y argumentos de palabras clave. Primero se definen los argumentos posicionales, seguidos de los argumentos de palabras clave. Por ejemplo:

Código:

def greet(name, age=30):

    print(f"Hello, {name}! You are {age} years old.")

greet("Alice")  # Output: Hello, Alice! You are 30 years old.

greet("Bob", age=25)  # Output: Hello, Bob! You are 25 years old.

En este ejemplo, la función "saludar" tiene un argumento posicional "nombre" y un argumento de palabra clave "edad" con un valor predeterminado de "30". Podemos llamar a la función solo con el argumento "nombre" y usa el valor predeterminado para "edad". Alternativamente, podemos proporcionar explícitamente un valor para "edad" usando su nombre.

Argumentos de palabras clave con argumentos posicionales

Una función también puede tener argumentos de palabras clave seguidos de argumentos posicionales. Primero se definen los argumentos de palabras clave, seguidos de los argumentos posicionales. Por ejemplo:

Código:

def greet(age=30, name):

    print(f"Hello, {name}! You are {age} years old.")

greet(name="Alice")  # Output: Hello, Alice! You are 30 years old.

greet(age=25, name="Bob")  # Output: Hello, Bob! You are 25 years old.

En este ejemplo, la función "saludar" tiene un argumento de palabra clave "edad" con un valor predeterminado de "30" y un argumento posicional "nombre". Podemos llamar a la función solo con el argumento "nombre", y usa el argumento predeterminado valor para "edad". Alternativamente, podemos proporcionar explícitamente un valor para "edad" usando su nombre.

Mezclar argumentos posicionales, argumentos de palabras clave y argumentos arbitrarios

Python nos permite mezclar argumentos posicionales, de palabras clave y arbitrarios en la misma función. Primero se definen los argumentos posicionales y de palabras clave, seguidos de los argumentos arbitrarios. Por ejemplo

Código:

def greet(name, age=30, *args, **kwargs):

    print(f"Hello, {name}! You are {age} years old.")

    print("Additional arguments:")

    for arg in args:

        print(arg)

    print("Additional keyword arguments:")

    for key, value in kwargs.items():

        print(f"{key}: {value}")

greet(" Alice," 25, " Hello," " World," city=" New York," country=" USA ")

En este ejemplo, la función `greet` tiene un argumento posicional `name`, un argumento de palabra clave `age` con un valor predeterminado de `30` y argumentos arbitrarios `*args` y `**kwargs`. Podemos llamar a la función `greet`. función con los argumentos `nombre` y `edad`, seguidos de argumentos posicionales y de palabras clave adicionales. El resultado incluye argumentos de nombre, edad, posición adicional y palabras clave.

Mejores prácticas para utilizar argumentos de funciones

Cuando se utilizan argumentos de función en Python, es esencial seguir algunas de las mejores prácticas para garantizar un código limpio y fácil de mantener. Exploremos algunas de estas mejores prácticas.

Elegir nombres de argumentos descriptivos

Al definir argumentos de funciones, es fundamental elegir nombres descriptivos que transmitan su propósito. Esto hace que el código sea legible y ayuda a otros desarrolladores a comprender el comportamiento de la función. Por ejemplo:

Código:

def calculate_area(length, width):

    return length * width

En este ejemplo, los argumentos "largo" y "ancho" indican claramente las dimensiones del área que se está calculando.

Mantener un número razonable de argumentos

Generalmente se recomienda mantener razonable el número de argumentos en una función. Se deben presentar más argumentos para que la función sea más fácil de entender y usar. Si una función requiere muchas entradas, puede ser una señal de que está haciendo demasiado y debería refactorizarse en funciones más pequeñas y más enfocadas.

Documentar los argumentos de la función Python

Documentar los argumentos de las funciones de Python es esencial para que a otros desarrolladores (incluido usted mismo en el futuro) les resulte más fácil comprender y utilizar sus funciones. Esto se puede hacer usando cadenas de documentos y comentarios de varias líneas inmediatamente después de la firma de la función. Por ejemplo:

Código:

def greet(name):

    """

    Greets the specified name.

    Args:

        name (str): The name to greet.

    """

    print(f"Hello, {name}!")

En este ejemplo, la cadena de documentación describe claramente el argumento "nombre" y su tipo esperado.

Evitar valores de argumentos predeterminados mutables

Al definir valores predeterminados para los argumentos de funciones de Python, generalmente se recomienda evitar el uso de objetos mutables como listas o diccionarios. Esto se debe a que los valores predeterminados mutables se comparten entre varias llamadas a funciones, lo que genera un comportamiento inesperado. En su lugar, utilice objetos inmutables o "Ninguno" como valores predeterminados y maneje objetos mutables dentro de la función. Por ejemplo:

Código:

def add_item(item, items=None):

    if items is None:

        items = []

    items.append(item)

    return items

En este ejemplo, la función `add_item` toma un argumento `item` y un argumento opcional `items`, que por defecto es `Ninguno.` Si `items` es `Ninguno`, creamos una nueva lista vacía. Esto garantiza que cada llamada a función tenga su lista para almacenar elementos.

Uso de sugerencias de tipo para argumentos de funciones de Python

Python admite sugerencias de tipo, que nos permiten especificar los tipos esperados de argumentos de función. Las sugerencias de escritura mejoran la legibilidad del código y pueden ayudar a detectar posibles errores relacionados con la escritura. Por ejemplo:

Código:

def calculate_area(length: float, width: float) -> float:

    return length * width

En este ejemplo, las sugerencias de tipo "flotante" indican que los argumentos "largo" y "ancho" deben ser números de punto flotante. La sugerencia de tipo de retorno "flotante" indica que la función devolverá un número de punto flotante.

Errores y trampas comunes con los argumentos de funciones de Python

Cuando se trabaja con argumentos de funciones de Python, es importante comprender los errores y dificultades comunes que pueden ocurrir con los argumentos de funciones. Esta sección explorará algunos de estos errores y proporcionará ejemplos para ayudarle a evitarlos.

Olvidarse de proporcionar los argumentos requeridos

Un error común es olvidarse de proporcionar los argumentos necesarios al llamar a una función. Esto puede provocar errores y comportamientos inesperados. Consideremos un ejemplo:

Código:

def greet(name):

    print(f"Hello, {name}!")

greet()  # Error: missing 1 required positional argument: 'name'

En el ejemplo anterior, la función `greet()` requiere un argumento `name`. Sin embargo, cuando llamamos a la función sin proporcionar ningún argumento, Python genera un error que indica que falta un argumento requerido.

Proporcione siempre los argumentos necesarios al llamar a una función para evitar este error.

Uso indebido de valores de argumentos predeterminados

Python nos permite definir valores predeterminados para los argumentos de las funciones. Sin embargo, el uso incorrecto de los valores de argumentos predeterminados puede generar resultados inesperados. Considere el siguiente ejemplo:

Código:

def multiply(a, b=2):

    return a * b

result = multiply(3)

print(result)  

# Output: 6

En el ejemplo anterior, la función `multiplicar()` tiene un argumento predeterminado `b` establecido en 2. Cuando llamamos a la función con un solo argumento (`multiplicar(3)`), Python usa el valor predeterminado para `b` y devuelve el resultado de multiplicar 3 por 2.

Para evitar un mal uso de los valores de los argumentos predeterminados, considere cuidadosamente el comportamiento de su función y elija los valores predeterminados apropiados.

Uso excesivo de argumentos arbitrarios

Python nos permite definir funciones con argumentos arbitrarios usando la sintaxis `*args`. Si bien esto puede resultar útil en determinadas situaciones, algo más que utilizar argumentos arbitrarios puede hacer que el código sea más fácil de entender y mantener. Veamos un ejemplo:

Código:

def calculate_average(*numbers):

    total = sum(numbers)

    average = total / len(numbers)

    return average

result = calculate_average(1, 2, 3, 4, 5)

print(result)  # Output: 3.0

En el ejemplo anterior, la función `calculate_average()` acepta cualquier número de argumentos y calcula su promedio. Si bien esto puede resultar conveniente, es posible que otros desarrolladores no sepan qué espera la función como entrada.

Para evitar el uso excesivo de argumentos arbitrarios, considere usar argumentos explícitos cuando sea posible y solo use `*args` cuando sea necesario.

Ignorar el orden de los argumentos

Otro error común es ignorar el orden de los argumentos al llamar a una función. Esto puede generar resultados inesperados y errores en su código. Consideremos un ejemplo:

Código:

def divide(a, b):

    return a / b

result = divide(2, 4)

print(result)  # Output: 0.5

result = divide(4, 2)

print(result)  # Output: 2.0

En el ejemplo anterior, la función `divide()` espera dos argumentos: `a` y `b.` Si ignoramos el orden de los argumentos al llamar a la función, obtendremos resultados diferentes.

Para evitar este error, proporcione siempre los argumentos en el orden correcto al llamar a una función.

No manejar argumentos inesperados

Python nos permite definir funciones con varios argumentos usando la sintaxis `**kwargs`. Sin embargo, no manejar argumentos inesperados puede provocar errores y comportamientos inesperados. Veamos un ejemplo:

Código:

def print_person_info(name, age):

    print(f"Name: {name}")

    print(f"Age: {age}")

print_person_info(name="John", age=25, city="New York")

En el ejemplo anterior, la función `print_person_info()` espera dos argumentos: `nombre` y `edad`. Sin embargo, también proporcionamos un argumento adicional, `ciudad`. Dado que la función no maneja argumentos inesperados, Python genera un error .

Para evitar este error, maneje explícitamente los argumentos inesperados o utilice argumentos de palabras clave para proporcionar información adicional.

Conceptos avanzados de argumentos de funciones de Python

Además de los errores y trampas comunes, Python proporciona conceptos avanzados para trabajar con argumentos de funciones. En esta sección, exploraremos algunos de estos conceptos.

Argumento Desempaquetando con *

Python nos permite descomprimir una lista o tupla y pasar sus elementos como argumentos individuales a una función usando el operador `*`. Esto puede resultar útil cuando se trabaja con listas de argumentos de longitud variable. Consideremos un ejemplo:

Código:

def multiply(a, b, c):

    return a * b * c

numbers = [2, 3, 4]

result = multiply(*numbers)

print(result)  # Output: 24

El ejemplo anterior define una lista "números" que contiene tres elementos. Al utilizar el operador `*` antes de la lista al llamar a la función `multiplicar()`, Python descomprime la lista y pasa sus elementos como argumentos individuales.

Argumento desempaquetando con **

Al igual que el desempaquetado de argumentos con `*,` Python también nos permite desempaquetar un diccionario y pasar sus pares clave-valor como argumentos de palabras clave a una función usando el operador `**`. Veamos un ejemplo:

Código:

def print_person_info(name, age):

    print(f"Name: {name}")

    print(f"Age: {age}")

person = {"name": "John", "age": 25}

print_person_info(**person)

El ejemplo anterior define un diccionario "persona" que contiene dos pares clave-valor. Al utilizar el operador `**` antes del diccionario al llamar a la función `print_person_info()`, Python descomprime el diccionario y pasa sus pares clave-valor como argumentos de palabras clave.

Anotación de argumentos y verificación de tipos

Python nos permite anotar argumentos de funciones con tipos usando la sintaxis `:`. Si bien el intérprete no aplica estas anotaciones, pueden ser útiles para la documentación y las herramientas de verificación de tipos. Consideremos un ejemplo:

Código:

def greet(name: str) -> None:

    print(f"Hello, {name}!")

greet("John")

En el ejemplo anterior, anotamos el argumento `name` de la función `greet()` con el tipo `str`. Esto indica que la función espera un argumento de cadena. Si bien Python no impone este tipo, las herramientas de verificación de tipos pueden usar estas anotaciones para detectar posibles errores de tipo.

Decoradores de argumentos de función

Python nos permite definir decoradores, que modifican el comportamiento de otras funciones. Podemos usar decoradores para agregar funcionalidad adicional a los argumentos de función. Veamos un ejemplo:

Código:

def uppercase_arguments(func):

    def wrapper(*args, **kwargs):

        args = [arg.upper() for arg in args]

        kwargs = {key: value.upper() for key, value in kwargs.items()}

        return func(*args, **kwargs)

    return wrapper

@uppercase_arguments

def greet(name):

    print(f"Hello, {name}!")

greet("John")

El ejemplo anterior define un decorador `uppercase_arguments` que convierte todos los argumentos a mayúsculas antes de llamar a la función decorada. Al aplicar el decorador `uppercase_arguments` a la función `greet()`, modificamos su comportamiento para saludar a la persona en mayúsculas.

Conclusión

En esta guía definitiva de argumentos de funciones de Python, hemos cubierto varios aspectos del trabajo con argumentos de funciones. Exploramos errores comunes, trampas y conceptos avanzados como decoradores y anotaciones para descomprimir argumentos.

Puede escribir código Python más sólido y fácil de mantener si comprende estos conceptos y evita errores comunes. Proporcione siempre los argumentos necesarios, utilice los valores predeterminados con prudencia y maneje los argumentos inesperados de forma adecuada.

¿Listo para potenciar tu carrera? Únete a nuestra exclusiva curso de ciencia de datos y potencia con Python, el lenguaje líder de la industria. ¿No tienes experiencia en codificación o ciencia de datos? ¡Ningún problema! Este curso está hecho a medida para principiantes como tú. Aproveche la oportunidad de iniciar su viaje hacia la ciencia de datos hoy. No pierdas esta oportunidad de adquirir valiosas habilidades en Python que te diferenciarán. ¡Inscríbase ahora y dé el primer paso hacia una carrera exitosa y gratificante en ciencia de datos!

Continúe su viaje en Python explorando más sobre los argumentos de funciones y experimentando con diferentes ejemplos. ¡Feliz codificación!

punto_img

café vc

café vc

Información más reciente

punto_img