Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Необходимо реализовать функцию, которая принимает на вход итератор с функциями, и возвращает словарь, в котором:
Мы напишем функцию function_dict, которая принимает на вход итерируемый объект, содержащий функции, и строит словарь, как описано в задаче. Воспользуемся библиотекой inspect для работы с аннотациями.
import inspect
def get_first_word(annotation):
"""Функция для извлечения первого слова из аннотации."""
# Преобразуем аннотацию в строку, если она есть
if isinstance(annotation, str):
return annotation.split()[0] if annotation else None
return str(annotation).split()[0] if annotation else None
def function_dict(funcs):
"""Функция принимает итератор функций и возвращает словарь, где ключ - первое слово из аннотации, а значение - сама функция."""
result = {}
for func in funcs:
# Получаем аннотации с помощью inspect
signature = inspect.signature(func)
if 'return' in signature.return_annotation:
annotation = signature.return_annotation
else:
continue
# Получаем первое слово из аннотации
first_word = get_first_word(annotation)
# Записываем в словарь
result[first_word] = func
return result
def add(a: int, b: int) -> "Addition of a and b":
return a + b
def multiply(a: int, b: int) -> "Multiplication of a and b":
return a * b
functions = [add, multiply]
result = function_dict(functions)
for key, value in result.items():
print(f"Ключ: {key}, Ссылка на функцию: {value}")
Ключ: "Addition", Ссылка на функцию: Ключ: "Multiplication", Ссылка на функцию:
Этот код создает словарь, в котором ключи — это первое слово из аннотации возврата функций, а значения — сами функции.