Как вы, возможно, знаете, python — это язык с динамической типизацией, что это означает? Ну, он выполняет операции проверки типов только во время выполнения. Это означает, что он проверяет тип переменной только при ее выполнении. Оглядываясь назад, Python позволяет изменять тип переменной в течение ее жизни.

Безопасность типов помогает предотвратить многие распространенные ошибки программирования, такие как передача значения неправильного типа, облегчает понимание и анализ, а также повышает производительность программного обеспечения за счет создания более эффективного кода.

Есть много способов написать безопасный код на Python, вот варианты.

Подсказки типов появились в Python 3.5. Хотя подсказки типов являются необязательными и не применяются во время выполнения, они могут использоваться инструментами статического анализа.

def greet(name: str) -> str:
    return f"Hello, {name}!"

greet("Tom")  # returns "Hello, John!"
greet(123)  # raises a TypeError

Модули типов (не самый большой их поклонник, поскольку он напоминает мне функциональный язык Elm/Haskell, также известный как функциональный язык 🤮).

from typing import Union

def add(a: Union[int, float], b: Union[int, float]) -> Union[int, float]:
    return a + b

add(1, 2)  # returns 3
add(1.5, 2.5)  # returns 4.0
add(1, 2.5)  # raises a TypeError

Используя утверждения, вы можете проверить, имеет ли эта переменная определенный тип, прежде чем использовать ее.

def double(x):
    assert isinstance(x, (int, float)), "x must be a number"
    return x * 2

double(2)  # returns 4
double(2.5)  # returns 5.0
double("hello")  # raises an AssertionError

Именованные кортежи – это упрощенный способ определения неизменяемых классов с именованными полями.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

p = Point(1, 2)
print(p.x)  # prints 1
print(p.y)  # prints 2
p.x = 3  # raises an AttributeError

Классы данных. dataclass – это декоратор, представленный в Python 3.7, который автоматически генерирует шаблонный код. dataclass может помочь обеспечить безопасность типов, автоматически генерируя подсказки типов и предоставляя значения по умолчанию для полей.

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int
    email: str = ""

p = Person("Alice", 30, "[email protected]")
print(p.name)  # prints "Alice"
print(p.age)  # prints 30
print(p.email)  # prints "[email protected]"

Заключение

Из собственного опыта я предпочитаю классы данных и подсказки типов. Безопасность типов становится все более популярной, поскольку она помогает разработчикам создавать более качественное программное обеспечение, менее подверженное ошибкам, более простое для понимания и обслуживания и более эффективное. Поэкспериментируйте с этими параметрами и посмотрите, что лучше подходит для ваших нужд и вашего стиля написания кода.

Похожие истории







Подпишитесь на DDIntel Здесь.

Посетите наш сайт здесь: https://www.datadriveninvestor.com

Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate