MyTetra Share
Делитесь знаниями!
Типизация (аннотация типов) в Python
Время создания: 04.07.2018 18:30
Автор: br0ke
Текстовые метки: python, type, types, annotation, annotations, strict types, mypy
Раздел: Информационные технологии - Python - Основы языка
Запись: and-semakin/mytetra_data/master/base/15307110278ihvpqbkyj/text.html на raw.githubusercontent.com

В Python нет строгой проверки на типы переменных (во время исполнения), но её можно проводить статически (перед исполнением) при помощи внешних утилит, таких как mypy. В последних версиях Python (3.0+ для аннотации типов аргументов функции, 3.6+ для аннотации типов переменных) поддерживает аннотацию типов в своём синтаксисе аннотацию типов переменных и аргументов функций, ранее аннотацию типов можно было производить через специальные комментарии.

Установка mypy:


python3 -m pip install -U mypy


Пример использования:

Обычный код на Python:

def fib(n):

a, b = 0, 1

while a < n:

yield a

a, b = b, a+b


Типизированный код на Python:

def fib(n: int) -> Iterator[int]:

a, b = 0, 1

while a < n:

yield a

a, b = b, a+b


Еще один пример:


from typing import List


def multisearch(needle: str, haystack: str) -> List[int]:

# Not necessarily the most efficient implementation

offset = haystack.find(needle)

if offset == -1:

return []

return [offset] + multisearch(needle, haystack[offset+1:])


$ mypy --strict-optional search6.py

$

 
MyTetra Share v.0.59
Яндекс индекс цитирования