for arg, annotation in divide_numbers.__annotations__.items():
print(f"{arg}: {annotation}"
print(f"docstring: {divide_numbers.__doc__}"
Объяснение:
Функция divide_numbers принимает два аргумента: x (тип float) и y (тип str, но с аннотацией 'y != 0', указывающей на ограничение, что y не должно быть равно 0). Функция возвращает строку (тип str), которая содержит результат деления x на y в формате 'x/y = d'.
Мы вызываем функцию дважды, передавая разные значения для x и y. Первый вызов вызывает ошибку, так как мы передаем 0 в качестве y. Второй вызов работает нормально и выводит на экран результат деления 5 на 10.
Затем мы используем цикл for для вывода аннотаций функции divide_numbers и ее документации. Мы обращаемся к атрибуту __annotations__ функции, который содержит словарь с именами аргументов и их соответствующими аннотациями. Мы также выводим строку документации функции, обращаясь к атрибуту __doc__ функции.
def func(x: float, y: int = 1) -> str:
"""Returns a string of the form 'x/y = d'."""
assert y != 0, 'Division by zero'
d = x / y
return f'{x}/{y} = {d}'
# Test and display
for x, y in [(5, 0), (5, 10)]:
result = func(x, y)
print(f'func({x}, {y}) = {result}')
print(f'func.__doc__ = {func.__doc__}')
print(f'func.__annotations__ = {func.__annotations__}')