Argumentos posicionales frente a argumentos de palabras clave en Python

Aditya Raj 30 enero 2023
  1. ¿Qué es un argumento en Python?
  2. ¿Qué es un argumento posicional en Python?
  3. ¿Qué es un argumento de palabra clave en Python?
  4. Argumentos posicionales frente a argumentos de palabras clave: ¿Qué debería utilizar?
  5. Conclusión
Argumentos posicionales frente a argumentos de palabras clave en Python

Al llamar a una función en Python, a menudo necesitamos pasarle valores de entrada. En este artículo, analizaremos los argumentos posicionales y los argumentos de palabras clave en Python. También tendremos una discusión sobre argumento posicional versus argumento de palabra clave en el que discutiremos las ventajas y desventajas de ambos enfoques para proporcionar entradas a funciones en Python.

¿Qué es un argumento en Python?

Para entender un argumento, declaremos una función printDetails() que toma cuatro valores, es decir, name, identity_number, age y weight de una persona, y luego los imprime.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)

Aquí, name, identity_number, age y weight se denominan parámetros de la función printDetails(). Entonces, podemos decir que un parámetro es parte de la firma / declaración de una función.

Ahora, suponga que queremos llamar a la función printDetails() con el name - Aditya, identity_number - TM2017001, age - 23 y weight - 65 como aporte. Podemos hacerlo de la siguiente manera.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

Producción :

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

Aquí, Aditya, TM2017001, 23 y 65 son argumentos de la función printDetails(). Tras la ejecución de la función, se asigna el valor Aditya al parámetro name, se asigna TM2017001 al parámetro identity_number, se asigna 23 al parámetro age y se asigna 65. asignado al parámetro weight. Por lo tanto, podemos decir que un argumento es un valor que se pasa a una función, y un parámetro es la variable declarada en la función a la que se asigna el argumento.

Para asignar un argumento a un parámetro, podemos pasar los valores en el orden en que se declaran los parámetros en la función. Alternativamente, también podemos asignar directamente los argumentos a los parámetros. Con base en esto, los argumentos en Python se clasifican como argumentos posicionales y argumentos de palabras clave. Discutámoslos uno por uno.

¿Qué es un argumento posicional en Python?

Cuando pasamos un argumento a una función directamente y se asigna a un parámetro en función de su posición, se denomina argumento posicional. Por ejemplo, cuando llamamos a la función printDetails() con los valores Aditya, TM2017001, 23 y 65 de la siguiente manera,

printDetails("Aditya", "TM2017001", 23, 65)

Todos los argumentos de entrada se asignarán a los parámetros en función de su posición en la llamada a la función y la posición de los parámetros en la declaración de la función. Escribamos la llamada a la función y la declaración de la función juntas para entender esto de una mejor manera.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

Producción :

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

Aquí, puede observar que la función printDetails () tiene parámetros en el orden de name, identity_number, age y weight. Por tanto, Aditya se asigna a name, TM2017001 se asigna a identity_number, 23 se asigna a age y 65 se asigna a weight.

¿Qué es un argumento de palabra clave en Python?

En lugar de pasar solo valores en la función, podemos asignarlos directamente a los parámetros de la siguiente manera.

printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

Aquí, cada parámetro funciona como una clave y cada argumento funciona como un valor. Por tanto, los argumentos se denominan argumentos de palabra clave. En la ejecución, la función funciona de la misma manera que lo hizo con los argumentos posicionales. Puede observar esto en el siguiente ejemplo.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

Producción :

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

Argumentos posicionales frente a argumentos de palabras clave: ¿Qué debería utilizar?

Si hablamos de ejecución, tanto los argumentos posicionales como los argumentos de palabras clave tienen la misma eficacia. La elección de utilizar cualquiera de estos enfoques depende de su conveniencia.

Al usar argumentos posicionales, cambiar la posición de los argumentos de entrada puede generar resultados no deseados. Por ejemplo, mire el siguiente ejemplo.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(65, "TM2017001", 23, "Aditya")

Producción :

Name is: 65
Identity Number is: TM2017001
Age is: 23
Weight is: Aditya

Aquí, el 65 se ha asignado al parámetro name y Aditya se ha asignado al parámetro weight. Por lo tanto, es importante pasar los argumentos posicionales en el mismo orden en que se han definido los parámetros correspondientes en la declaración de la función.

Por otro lado, podemos pasar los argumentos en cualquier orden mientras usamos argumentos de palabras clave. No afecta la salida de la función. Puede observar esto en el siguiente ejemplo.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(weight=65, identity_number="TM2017001", age=23, name="Aditya")

Producción :

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

Por lo tanto, si desea evitar cualquier posible error debido a un cambio en la posición de los argumentos, sería mejor utilizar los argumentos de palabra clave.

También podemos usar argumentos posicionales y de palabras clave en una sola llamada de función, como se muestra en el siguiente programa.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", age=23, weight=65)

Producción :

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

Aquí, puede observar que los argumentos posicionales se pasan a la función en el mismo lugar donde se ha definido el parámetro correspondiente. En comparación, los argumentos de palabras clave se pueden pasar en cualquier orden. Además, no podemos pasar argumentos posicionales después de pasar un argumento de palabra clave.

Una vez que pasamos un argumento de palabra clave, todos los argumentos restantes deben pasarse como argumentos de palabra clave. De lo contrario, el programa se encontrará con un error, como se puede observar en el siguiente ejemplo.

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", identity_number="TM2017001", 23, weight=65)

Producción :

  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 8
    printDetails("Aditya", identity_number="TM2017001", 23, weight=65)
                                                        ^
SyntaxError: positional argument follows keyword argument

Por lo tanto, puede elegir argumentos posicionales o argumentos de palabras clave, o ambos en la misma llamada de función según su conveniencia.

Conclusión

En este artículo, estudiamos argumentos posicionales y argumentos de palabras clave en Python. También discutimos el argumento posicional frente al argumento de palabra clave y concluimos que ambos enfoques son iguales en términos de eficiencia de ejecución. Incluso podemos usarlos juntos en una sola llamada de función. Solo tenga en cuenta que no podemos usar un argumento posicional después de un argumento de palabra clave.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - Python Function

Artículo relacionado - Python Argument