Перейти к основному содержимому

Python: Функции, поддерживающие только именованные аргументы (kwargs)

Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы передавать только именованные аргументы, можно поступить следующим образом:

def test(*, a, b):  
pass

test("value for a", "value for b") # TypeError: test() takes 0 positional arguments...
test(a="value", b="value 2") # А так - работает...

Это может быть полезно для того, чтобы улучшить понятность кода. Как видите, наша задача легко решается при помощи использования аргумента * перед списком именованных аргументов. Здесь, что вполне очевидно, можно использовать и позиционные аргументы — в том случае, если поместить их до аргумента *.