#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.