Код Python проходит через весь оператор переключателя - PullRequest
0 голосов
/ 20 декабря 2018

Я кодирую бота, используя API-интерфейс discord.py, пытался смоделировать switch / case для различных команд боту

Я прочитал в Интернете, что могу использовать switcher = { *some value* : *function* } для имитации switch / case, но при определенных значениях она запускает каждую функцию вместо соответствующей

async def command_switcher(argument, message, parameters):
    switcher= {
        ">autovc": await autovc_command_switcher(parameters[1], message, 
         parameters) if (len(parameters) > 1) else await 
         autovc_invalid(message),
        ">help": await default_help(message),
        ">vcgroup": await autovc_invalid(message)
    }
    return switcher.get(argument, "Invalid")

Я вызываю command_switcher и передаю аргумент, если аргумент ">help", тогда он правильно только запускаетdefault_help() функция, но если я передаю ">autovc", она запускает все 3 функции

Редактировать : также, если я переключаю порядок записей, она все равно будет иметь тот же результат:">help" по-прежнему работает только сам, а ">autovc" по-прежнему запускает все 3

Редактировать 2 : Решено Спасибо за комментарии, пытаясь создать правильный MCVEкак было рекомендовано, и, увидев комментарий о том, что значения dict являются объектами функции, я понял, что неправильно вызывал функции, а не ссылался на сам объект функции.У меня также были некоторые проблемы с async / await, но комментарий, связывающий меня с https://xinhuang.github.io/posts/2017-07-31-common-mistakes-using-python3-asyncio.html, прояснил это и для меня

...