Python:如何根据函数是否匹配指定的字符串来获取函数

时间:2018-06-14 01:02:33

标签: python

我有一个我在python中编程的facebook messenger聊天机器人。它处理了几十个命令,主要是通过大量的i​​f / then语句,如下所示

if state == "state1":
    if "command1" in message:
         (do stuff)
    elif "command2" in message:
         (do other stuff)

         state = "waiting_command2_resp"
    elif ...
elif state == "waiting_command2_resp":
    if message == "response1":
         (stuff)
    elif message == "response2":
         (you get the idea)

elif...

你明白了。随着僵尸程序的功能不断增长并变得越来越复杂,代码的导航变得异常混乱。

我正在寻找一种重构代码的方法,以便它更清晰。我可以使每个动作成为一个方法,但if / else语句的质量将保留以确定调用哪个方法

为每个方法分配字符串并运行适当的方法(其分配的字符串与消息字符串匹配)有什么好的,可维护的方法?

我知道Flask运行方法来响应方法定义之上的URL路径字符串。例如:

@app.route('/')
def index():
    do stuff

@app.route('/endpoint')
def method():
    do other stuff

我有什么方法可以通过类似的行为来做到这一点吗?

编辑:这不是它标记为副本的问题的副本。那个问题是关于你是否有一个字符串,其中包含函数的确切名称。情况并非如此

0 个答案:

没有答案