什么是" pythonic"结合很多startswith
语句的方法?
以下是详细信息:
我从服务器接收各种类型的消息,它们使用不同的第一个字母发送它们,以便接收器快速识别和排序它们。我写了很多代码
if message.startswith('A'):
do_A()
elif message.startswith('B'):
do_B()
- 喜欢陈述。但是,我觉得有更多的pythonic方法来编写没有很多语句的代码,比如可能列出所有可能的首字母并且有一个startswith
语句。
if message[0]=='A'
的其他变体甚至更好,因为它似乎每this更快,速度对我很重要。
答案 0 :(得分:9)
使用字典将第一个字母映射到函数:
message_map = {'A': do_A, 'B': do_B}
dispatch = message_map.get(message[:1])
if dispatch is not None:
dispatch()
Python中的函数是第一类对象,因此您可以将它们存储在这样的字典中。
请注意,我使用切片来获取第一个字符;如果message
恰好是空的,它会导致空字符串,而不是抛出IndexError
异常。