Аргументы, которые можно передавать только как ключевые#
Аргументы, которые указаны после *
можно передавать только как ключевые при
вызове функции.
Примечание
Этот функционал доступен в любой версии Python3.
Например, в этой функции аргументы min_length и check_username можно передавать только как ключевые.
def check_passwd(username, password, *, min_length=8, check_username=True):
if len(password) < min_length:
print('Пароль слишком короткий')
return False
elif check_username and username in password:
print('Пароль содержит имя пользователя')
return False
else:
print(f'Пароль для пользователя {username} прошел все проверки')
return True
При передаче их как позиционных, возникнет исключение:
In [2]: check_passwd('nata', '12345', min_length=3)
Пароль для пользователя nata прошел все проверки
Out[2]: True
In [3]: check_passwd('nata', '12345', 3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-4f346c9cf914> in <module>
----> 1 check_passwd('nata', '12345', 3)
TypeError: check_passwd() takes 2 positional arguments but 3 were given