Python: Как вызвать функцию, которая находится в модуле, используя словарь? - PullRequest
0 голосов
/ 11 мая 2019

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

def which_function(client_message, albums, songs):
    functions = {"0": report_error,
                 "1": return_albums,
                 "2": songs_in_album,
                 "3": length_of_song,
                 "4": lyrics_of_song,
                 "5": which_album,
                 "6": search_by_name,
                 "7": search_by_lyrics}
    function = functions[client_message[0]]
    return data.function(client_message[1], albums, songs)

Это функция, которая должна выполнять каждую функциюиспользуя ввод пользователя (client_message [0]), но он не работает должным образом ...

Это ошибка, которую я получаю:

functions = {"0": report_error,
NameError: name 'report_error' is not defined

Спасибо всем за помощь:D

1 Ответ

1 голос
/ 11 мая 2019

Я предполагаю, что вы уже импортировали модуль data.Вам нужно использовать импортированные функции внутри словаря.

def which_function(client_message, albums, songs):
    functions = {"0": data.report_error,
                 "1": data.return_albums,
                 "2": data.songs_in_album,
                 "3": data.length_of_song,
                 "4": data.lyrics_of_song,
                 "5": data.which_album,
                 "6": data.search_by_name,
                 "7": data.search_by_lyrics}
    function = functions[client_message[0]]
    return function(client_message[1], albums, songs)

И, наконец, вы можете напрямую вызвать значение, хранящееся в словаре (нет необходимости в data.function - это не сработает)

...