Статическая типизация и компиляция кода Python

Python — динамически типизированный, интерпретируемый язык программирования, в отличие от статически типизированных, компилируемых языков, таких как C++. Но он может быть таким!

Вы можете писать код Python статически типизированным способом, используя подсказки типов, проверять ошибки типов с помощью mypy, а также компилировать любой Python с помощью Nuitka.
Таким образом, если вы смешаете их оба, вы получите статически типизированный, компилируемый Python-код!

Давайте посмотрим, как этого добиться.

  1. Установите mypy.

  2. Установите Nuitka.

    (Возможно, сначала вам потребуется установить python3-devel).

Вот и все. Теперь мы можем начать писать наш код.

Пример

Давайте определим класс Person, у которого есть имя — строка, возраст — int, работа — строка и зарплата — float.

Код будет выглядеть следующим образом. Создайте файл main.py (или любое другое имя по вашему желанию).

class Person:
    name: str
    age: int
    job: str
    salary: float

    def __init__(self, name: str, age: int, job: str, salary: float) -> None:
        self.name = name
        self.age = age
        self.job = job
        self.salary = salary

    def increase_salary(self, amount: float) -> None:
        self.salary += amount

    def __str__(self) -> str:
        return f"Hello, my name is {self.name}, I am {self.age} years old, and I am a {self.job}."


adham: Person = Person(name="Adham", age=23, job="Engineer", salary=10000)

amount: float = 5000

adham.increase_salary(amount)

print(adham)
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Запустите в терминале команду «python main.py».

Мы использовали подсказки типов для указания типов, но Python не применяет эти типы, вы можете дать str значение int, и Python не выдаст никаких ошибок.
Например, измените значение переменной amount на строку.

Здесь мой редактор кода дал мне подсказку, что тип несовместим, но Python выполнит код, он только выдаст ошибку во время выполнения, когда выполнит метод icrease_salary.


Как же отловить эти ошибки типа, не выполняя код?
Здесь на помощь приходит mypy.

Запустите в терминале команду «mypy main.py».

Вы можете видеть, что mypy поймал ошибку.
Если мы изменим значение amount обратно на 5000 и запустим mypy снова, вот результат.

Теперь, когда мы уверены, что в нашем коде нет ошибок типа, мы можем скомпилировать код с помощью Nuitka.

Запустите «nuitka3 main.py» в терминале.

Запустите «./main.bin» в терминале, чтобы запустить скомпилированный код.

Несколько более простой способ проверить и скомпилировать наш код в одной команде — запустить «mypy main.py && nuitka3 main.py».

Это позволит сначала проверить наш код, и если он правильный, то он будет скомпилирован.

Вот и все! Теперь у вас есть Python++!

Оцените статью
devanswers.ru
Добавить комментарий