Как работает определение типа ввода и вывода в заголовке функции или строке документации? - PullRequest
0 голосов
/ 30 марта 2020

Я недавно начал изучать программирование с Python, и в некоторых источниках я сталкиваюсь с кодом:

def f(x : int) -> str:

или

def f(x):
    """(int) -> str...."""

Когда я пробую первый код, он не кажется, ограничивают ввод или вывод функции. Означает ли это, что они предназначены для ясности кода, и использование любого из них зависит от личных предпочтений или я что-то упустил?

1 Ответ

0 голосов
/ 30 марта 2020

означает ли это, что они предназначены для ясности кода

Да, код подсказки типа обычно легче читать и понимать.

Вы также можете использовать сторонние инструменты проверить свой код. Для этого можно использовать два инструмента: mypy и pyre .

Если у вас есть модуль с именем example.py:

def foo(bar: int) -> str:
    return str(bar)


foo("hello, world")
foo(1)
foo(b'\x00')

Вы можете проверить это так:

$ mypy example.py 
example.py:5: error: Argument 1 to "foo" has incompatible type "str"; expected "int"
example.py:7: error: Argument 1 to "foo" has incompatible type "bytes"; expected "int"
Found 2 errors in 1 file (checked 1 source file)
...