Добавление значения параметра по умолчанию с подсказкой типа в Python
если у меня есть такая функция:
def foo(name, opts={}):
pass
и я хочу добавить подсказки типа к параметрам, как это сделать? То, как я предполагал, дает мне синтаксическую ошибку:
def foo(name: str, opts={}: dict) -> str:
pass
следующее не вызывает синтаксическую ошибку, но это не похоже на интуитивный способ обработки этого случая:
def foo(name: str, opts: dict={}) -> str:
pass
Я ничего не могу найти в typing
документация или в поиске Google.
Edit: я не знал, как работают аргументы по умолчанию в Python, но ради этого вопроса, я буду держать примеры выше. В общем, гораздо лучше сделать следующее:
def foo(name: str, opts: dict=None) -> str:
if not opts:
opts={}
pass
1 ответ:
ваш второй способ правильный.
def foo(opts: dict = {}): pass print(foo.__annotations__)
выводит
{'opts': <class 'dict'>}
это правда, что это не указано в PEP 484, но подсказки типа-это приложение аннотаций функций, которые задокументированы в PEP 3107. синтаксис раздел дает понять, что аргументы ключевых слов работают с аннотациями функций таким образом.
я настоятельно рекомендую не использовать изменяемые аргументы ключевых слов. Подробная информация здесь.