Рубрики
Без рубрики

Аннотации и тип проверки в Python

Python – это динамически напечатанный язык программирования. Это означает, что проверка типа выполняется во время выполнения … Помечено Python, лучшие практики, в видом на видимости.

Python – это динамически напечатанный язык программирования. Это означает, что проверка типа выполняется во время выполнения. Pep484 Введенные подсказки типа, что позволяет добавлять тип подсказки к переменным и функциональным подписям.

Представьте себе функцию Say_Hello который берет и возвращает строку. Без подсказок, эта функция выглядела так:

def say_hello(name):
    return "Hello " + name

Это может быть аннотировано следующим образом:

def say_hello(name: str) -> str:
    return "Hello " + name

Тип псевдонимов

Определить функцию itemize_names Это принимает список имен и возвращает новый список с именами, пронумерованными от 1 до n. Реализация функции можно найти ниже:

def itemize_names(names):
    return [f"{pos + 1}. {name}" for pos, name in enumerate(names)]

Чтобы аннотировать функцию псевдоним может быть создана для имен:

from typing import List

NameList = List[str]

def itemize_names(names: NameList) -> NameList:
    return [f"{pos + 1}. {name}" for pos, name in enumerate(names)]

Модуль набора текста обеспечивает поддержку намного больше, например:

  • Создание нового типа
  • Аннотация функции, которая принимает обратный вызов
  • Универсал

Вы можете найти Документация здесь Чтобы узнать, как добавить тип подсказок в свой код Python.

Тип проверки

Хотя вы можете добавить аннотации типа в свой код, время выполнения Python не поддерживает аннотации типа. Продемонстрировать, Say_Hello Функция, определенная ранее, может быть переписана, как это, не создавая никаких изменений в функциональности.

def say_hello(name: str) -> int:
    return "Hello " + name

Вы также не получите предупреждение от Python.

Чтобы обеспечить проверки типа, существует несколько шашек статического типа. Я бы использовал Marpy Отказ

Давайте установим Marpy Чтобы получить эти проверки, которые нам нужны. Вы можете установить Marpy С помощью этой команды:

$ python3 -m pip install mypy

Напечатать проверку нашего Say_Hello Функция, скажем, что она содержится в say_hello.py файл:

$ mypy say_hello.py 

say_hello.py:2: error: Incompatible return value type (got "str", expected "int")
Found 1 error in 1 file (checked 1 source file)

Давайте исправим ошибку, изменив ожидаемый тип возврата в ул ...| И введите проверьте наш файл еще раз:

$ mypy say_hello.py

Success: no issues found in 1 source file

Mypy документация Предоставляет всю информацию, необходимую для использования Marpy в ваших проектах.

Спасибо за чтение.

Оригинал: “https://dev.to/chief_oye/annotations-and-type-checking-in-python-34j8”