【发布时间】:2019-06-14 09:56:40
【问题描述】:
我需要解析客户端给出的一些操作。 action 是一个包含单词 action 的简单字符串:“load”、“start”、“pause”、....
我来自 C 世界,是 Python 的新手。我需要一个 switch 语句,我使用 switcher.get() 函数完成了它(见下面的代码)。
问题是这个切换器不能只识别字符串'load',其他字符串正常工作(见下面的输出示例)。
为什么?
为了正确分析问题,我只给你切换器的情况,因为其余的代码可以工作,这部分没有用。 我尝试直接将字符串“加载”提供给函数,但它直接转到“找不到命令”的例外区域
switcher={
'load': partial(load_wav,message_tocheck),
'start': partial(start_wav,message_tocheck),
'pause': partial(pause_wav,message_tocheck),
'resume': partial(resume_wav,message_tocheck),
'stop': partial(stop_wav,message_tocheck),
'reset': partial(reset_ch,message_tocheck),
'mqtt': partial(mqttrun),
'help': partial(help),
'zero':lambda:'lambda'
}
try:
func=switcher.get('load','INVALID')
return func()
except:
print('-------- COMMAND NOT FOUND --------')
输出:
- 加载(不工作):
-------- 命令未找到--------
- 开始(工作):
限制:A = 0,B = 8,C = 0,D = 8
等待样本 = 690
通道 0 上的 LED 矩阵。刺激正在运行...
- 帮助(工作):
----------------帮助----------------
可能的命令是:
插入所有可能的主题以订阅
----------------帮助----------------
如您所见,唯一不起作用的字符串是加载。问题是我不能用另一个词来改变“加载”这个词。
【问题讨论】:
标签: python python-3.x string switch-statement switchers