Создание словаря со всеми функциями из файла

#python #python-3.x

#python #python-3.x

Вопрос:

Допустим, у меня есть файл functions.py , содержащий

 def some_function():
   return "something"

def some_other_function():
    return "something else"
 

Я пытаюсь создать словарь в другом файле load_functions.py , где ключами являются имена функций functions.py , а элементами являются фактические функции, например:

 import functions
useable_functions = [f for f in dir(functions) if "__" not in f] #Get all functions to be used
function_dict = TO_BE_IMPLEMENTED
print(function_dict)

#{"some_function":some_function,
#"some_other_function":some_other_function}

func = function_dict["some_function"]
func()
# "something"
 

Это обязательно выполнимо?

Комментарии:

1. Альтернатива ответу Icebreakers, вы всегда можете читать functions.py как файл построчно и посмотреть, содержит ли он def и разделить его на имя функции.

Ответ №1:

Взгляните на inspect модуль.

Допустим, у вас есть свой functions.py модуль. Чтобы получить из него все функции, используйте это:

 import inspect

import functions  # your module

elements = inspect.getmembers(functions, inspect.isfunction)
element_dict = dict(elements)
 

Вызов вернет все функциональные члены functions.py модуля в виде списка (name, value) пар, отсортированных по имени. Обратите внимание, что он также будет включать лямбды.

Затем я использую dict() для преобразования (name, value) пар в dict.

https://docs.python.org/3/library/inspect.html