Parámetros especiales en funciones#
[1]:
#
#
def standard_arg(arg):
print(arg)
[2]:
standard_arg(1)
1
[3]:
standard_arg(arg=1)
1
[4]:
#
# Unicamente posicional
#
def pos_only_arg(arg, /):
print(arg)
[6]:
pos_only_arg(1)
1
[7]:
pos_only_arg(pos=1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[7], line 1
----> 1 pos_only_arg(pos=1)
TypeError: pos_only_arg() got an unexpected keyword argument 'pos'
[9]:
#
# Unicamente con nombre
#
def kwd_only_arg(*, arg):
print(arg)
[10]:
kwd_only_arg(arg=1)
1
[11]:
kwd_only_arg(1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[11], line 1
----> 1 kwd_only_arg(1)
TypeError: kwd_only_arg() takes 0 positional arguments but 1 was given
[12]:
#
# Parámetros combinados
#
def combined_example(pos_only, /, standard, *, kwd_only):
print(pos_only, standard, kwd_only)
[13]:
combined_example(1, 2, kwd_only=3)
1 2 3
[14]:
combined_example(1, standard=2, kwd_only=3)
1 2 3
[15]:
combined_example(1, 2, 3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[15], line 1
----> 1 combined_example(1, 2, 3)
TypeError: combined_example() takes 2 positional arguments but 3 were given
[16]:
combined_example(pos_only=1, standard=2, kwd_only=3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[16], line 1
----> 1 combined_example(pos_only=1, standard=2, kwd_only=3)
TypeError: combined_example() got some positional-only arguments passed as keyword arguments: 'pos_only'
[17]:
#
# Colisiones
#
def foo(name, **kwds):
return 'name' in kwds
[18]:
foo(1, **{'name': 2})
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[18], line 1
----> 1 foo(1, **{'name': 2})
TypeError: foo() got multiple values for argument 'name'
[ ]:
#
# Uso con posicionales
#
def foo(name, /, **kwds):
return 'name' in kwds
foo(1, **{'name': 2})