У меня есть следующая функция
def foo(main_list = None):
if main_list is None:
main_list = []
# do stuff with main_list
Это общая парадигма Python , потому что если у вас есть список по умолчанию, этот список остается неизменным для всех вызовов по умолчанию. Таким образом, вы можете обойти это, установив значение None
, а затем сбросив его до фактического списка по умолчанию внутри функции.
При наборе этого я хотел бы сделать:
def foo(main_list: List[int] = None):
if main_list is None:
main_list = []
# do stuff with main_list
Но Mypy жалуется, потому что теперь я храню None
в List[int]
, что не правильно.
Должен ли я ...
Марка main_list
типа Optional[List[int]]
Добавьте # type: ignore
(который также удалит все наборы из других параметров, которые работают просто отлично)
Какой-то другой лучший способ обойти это
(Я действительно надеюсь, что ответ # 3, поэтому я спрашиваю. Прямо сейчас в моем коде я выбрал вариант # 2.)