Dado que Python 3.8 introdujo solo argumentos posicionales, esta publicación necesita una actualización.
Los argumentos posicionales, los argumentos de palabras clave, los argumentos obligatorios y los opcionales a menudo se confunden. Los argumentos posicionales NO SON LOS MISMOS QUE los argumentos obligatorios. y los argumentos de palabras clave NO SON LOS MISMOS QUE los argumentos opcionales.
Argumentos posicionales son argumentos que se pueden llamar por su posición en la definición de la función.
Argumentos de palabras clave son argumentos que se pueden llamar por su nombre.
Argumentos requeridos son argumentos que se deben pasar a la función.
Los argumentos opcionales son argumentos que no se pueden pasar a la función. En python, los argumentos opcionales son argumentos que tienen un valor predeterminado .
Argumento posicional que es opcional (Python 3.8)
def f(a=2, /):
pass
f()
f(1)
f(a=1)
Argumento posicional que se requiere (Python 3.8)
def f(a, /):
pass
f()
f(1)
f(a=1)
Argumento de palabra clave que es opcional
def f(*, a=1):
pass
f()
f(1)
f(a=1)
argumento de palabra clave que se requiere
def f(*, a)
pass
f() # Error, argument required
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
Argumento posicional y de palabra clave que es opcional
def f(a=1)
pass
f() # Allowed, argument is optional
f(1) # Allowed, it's a positional argument
f(a=1) # Allowed, it's a keyword argument
# In fact this function is the same as
def f(*, a=1, /):
pass
Argumento posicional y de palabra clave que se requiere
def f(a):
pass
f()
f(1)
f(a=1)
def f(*, a, /):
pass
Conclusión, un argumento puede ser opcional o obligatorio, no ambos al mismo tiempo . También puede ser posicional, palabra clave o ambas al mismo tiempo .
Python 3.8 introdujo parámetros solo posicionales .
def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
pass