В Python3 я могу сделать (благодаря pep 3102):предотвратить опечатки в переменной ключевого слова арг
def some_fun(a, *args, log=None, verbose=0):
pass
и быть уверенным, что если я называю это с:
some_fun(1, 2, 3, lob=debug_log)
я получаю ошибку типа на неожиданный аргумент ключевого слова lob
.
На Python2 Я не могу определить some_fun()
с аргументами только для ключевого слова после списка произвольных аргументов. Я должен сделать:
def some_fun(a, *args, **kw):
log = kw.get("log", None)
verbose = kw.get("verbose", 0)
это работает все хорошо и денди, когда называется правильно, но я хотел бы получить ошибку типа так же, как с Python3, когда я предоставить один или более неправильные аргументы ключевых слов, чтобы some_fun()
.
Выглядит хорошо, но это только работает в 2.7+ – Snake
@Snake изменился, чтобы быть немного более гибкой версией ... –
Это работает. Я постараюсь повысить это, как только у меня хватит репутации. – Snake