Статическая типизация в python3: список против списка - PullRequest
0 голосов
/ 03 октября 2018

В чем разница между использованием list и List при определении, например, аргумента функции в python3?Например, в чем разница между

def do_something(vars: list):

и

def do_something(vars: List):

Документация гласит:

class typing.List(list, MutableSequence [T])

Общая версия списка.Полезно для аннотирования типов возврата.

но я не совсем уверен, что означает вышеприведенное.

У меня есть похожие вопросы: dict против Dict, set против Set и т. Д.

1 Ответ

0 голосов
/ 03 октября 2018

Не все списки одинаковы с точки зрения ввода.Программа

def f(some_list: list):
    return [i*2 for i in some_list]

f(['a', 'b', 'c'])

не сможет выполнить проверку статического типа, даже если она не будет работать.В отличие от этого, вы можете указать содержимое списка, используя абстрактные типы из typing

def f(some_list: List[int]) -> List[int]:
    return [i*2 for i in some_list]

f(['a', 'b', 'c'])

, что приведет к ошибке, как и должно быть.

...