Ввод параметров в Python: методы и примеры аннотаций типов

“Ввод параметров в Python”

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

  1. Основной ввод параметров:
    Вы можете указать тип параметра непосредственно в сигнатуре функции, используя двоеточие (:).

    def greet(name: str) -> str:
       return f"Hello, {name}!"
    print(greet("Alice"))  # Output: Hello, Alice!
    print(greet(123))      # Output: TypeError: greet() argument must be str, not int
  2. Необязательные параметры.
    Вы можете указать, что параметр является необязательным, используя подсказку типа typing.Optional. Это позволяет параметру принимать либо указанный тип, либо None.

    from typing import Optional
    def greet(name: Optional[str]) -> str:
       if name:
           return f"Hello, {name}!"
       else:
           return "Hello, stranger!"
    print(greet("Alice"))  # Output: Hello, Alice!
    print(greet(None))     # Output: Hello, stranger!
  3. Значения параметров по умолчанию.
    Вы можете присвоить параметру значение по умолчанию, используя обозначение знака равенства (=). Тип значения по умолчанию используется в качестве подсказки типа для параметра.

    def greet(name: str = "stranger") -> str:
       return f"Hello, {name}!"
    print(greet())         # Output: Hello, stranger!
    print(greet("Alice"))  # Output: Hello, Alice!
  4. Типы объединения.
    Вы можете указать несколько типов для параметра, используя подсказку типа typing.Union.

    from typing import Union
    def square(number: Union[int, float]) -> Union[int, float]:
       return number * number
    print(square(5))       # Output: 25
    print(square(2.5))     # Output: 6.25
    print(square("hello")) # Output: TypeError: unsupported operand type(s) for *: 'str' and 'str'