Определение типов в аргументах функции Python 3 со значениями по умолчанию

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

Метод 1: подсказки типов в сигнатуре функции
Самый простой метод — использовать подсказки типов непосредственно в сигнатуре функции. Вот пример:

def greet(name: str = "John") -> str:
    return f"Hello, {name}!"
print(greet())  # Output: Hello, John!
print(greet("Alice"))  # Output: Hello, Alice!

Метод 2: комментарии к типам
В Python 3.5 появились комментарии к типам в качестве альтернативы подсказкам по типам. Вы можете использовать их для указания типов аргументов функции со значениями по умолчанию. Вот пример:

def add_numbers(x, y=10):  # type: (int, int) -> int
    return x + y
print(add_numbers(5))  # Output: 15
print(add_numbers(5, 7))  # Output: 12

Метод 3: использование типов объединения
Вы можете определить несколько приемлемых типов для аргумента, используя тип объединения из модуля typing. Вот пример:

from typing import Union
def square(number: Union[int, float] = 0) -> float:
    return number  2
print(square())  # Output: 0.0
print(square(5))  # Output: 25.0
print(square(2.5))  # Output: 6.25

Метод 4: переменные типа
Переменные типа полезны, когда вы хотите определить универсальный тип, который может быть любым типом. Вот пример:

from typing import TypeVar
T = TypeVar('T')
def repeat(item: T, times: int = 1) -> List[T]:
    return [item] * times
print(repeat("Hello"))  # Output: ['Hello']
print(repeat(42, 3))  # Output: [42, 42, 42]