Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
< /code>
Vector
Тип псевдоним четко показывает, что псевдоним типа полезны для упрощения комплексных подписей типа.
Однако как насчет псевдонимов примитивных типов данных?
URL = str
def process_url(url: URL) -> URL:
pass
< /code>
vs.
def process_url(url: str) -> str:
pass
< /code>
Version with type alias URL
для примитивного типа str is:
Самодокументирование (среди прочего, теперь я могу пропустить документирование возвращаемого значения, так как это должно быть явно URL),
Устойчивое к изменению реализации типа (я могу переключаться на URL, чтобы быть DICT или названное. подписи). < /li>
< /ul>
Проблема в том, что я не могу найти кого -либо еще, следуя такой практике. Я просто боюсь, что непреднамеренно злоупотребляю подсказками типа для реализации своих собственных идей, а не следовать их предполагаемой цели. < /P>
Примечание с 2020-10 < /strong> < /p>
python 3.9 вводит «гибкую функцию и переменную аннотация», которые позволяют создавать аннотации, подобные: P> P, P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> class = "lang-py prettyprint-override">def speed_1(distance: "feet", time: "seconds") -> "miles per hour":
pass
def speed_2(
distance: Annotated[float, "feet"], time: Annotated[float, "seconds"]
) -> Annotated[float, "miles per hour"]:
pass
< /code>
Which renders aliasing data types for documenting purposes rather redundant!
See:
В документации Python для печати и типа подсказки у нас есть пример ниже: < /p> [code]Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector: return [scalar * num for num in vector] < /code> Vector[/code] Тип псевдоним четко показывает, что псевдоним типа полезны для упрощения комплексных подписей типа. Однако как насчет псевдонимов примитивных типов данных?[code]URL = str
def process_url(url: URL) -> URL: pass < /code> vs. def process_url(url: str) -> str: pass < /code> Version with type alias URL[/code] для примитивного типа str is: [list] [*] Самодокументирование (среди прочего, теперь я могу пропустить документирование возвращаемого значения, так как это должно быть явно URL), [*] Устойчивое к изменению реализации типа (я могу переключаться на URL, чтобы быть DICT или названное. подписи). < /li> < /ul> Проблема в том, что я не могу найти кого -либо еще, следуя такой практике. Я просто боюсь, что непреднамеренно злоупотребляю подсказками типа для реализации своих собственных идей, а не следовать их предполагаемой цели. < /P>
Примечание с 2020-10 < /strong> < /p> python 3.9 вводит «гибкую функцию и переменную аннотация», которые позволяют создавать аннотации, подобные: P> P, P> P> P> P> P> P> P> P> P> P> P> P> P> P> P> class = "lang-py prettyprint-override">def speed_1(distance: "feet", time: "seconds") -> "miles per hour": pass
def speed_2( distance: Annotated[float, "feet"], time: Annotated[float, "seconds"] ) -> Annotated[float, "miles per hour"]: pass < /code> Which renders aliasing data types for documenting purposes rather redundant! See:
Сначала я присвоил большое значение целочисленной переменной (большее число, чем диапазон байтов data_type). Затем я создал байтовую переменную и попытался ввести значение первой переменной....