我写了一个可以输出三件事的函数:
def getStatus():
if condition1:
return "NormalStatus"
elif condition2:
return "ServerCompromised"
elif condition3:
return "UnknownStatus"
如果我正在编写C ++代码,我将使用#define
来生成一些状态常量,这些状态常量仅是整数,因此该函数不会每次都返回字符串。是否有Pythonic等效项可避免使用这样的字符串?
我打算多次调用此函数,因此对输出进行字符串比较可能比比较常量int慢得多。
答案 0 :(得分:2)
您可以在{1: "NormalStatus", 2: "ServerCompromised"}
等字典中定义自己的映射。然后,您可以返回Integers,而仅需在dict中查找这些整数(如有必要)。
注释中已经提到了一种替代方法:为此,您也可以使用enum module。也许与#define
最相似的方式是这样声明(全局)变量:
NORMAL_STATUS = 1
SERVER_COMPROMISED = 2
...
但是正如枚举模块的模块文档中所述
枚举是绑定到唯一,恒定值的一组符号名称(成员)。
这也可以看作是将C ++的#define
引入Python的最相似的方法。
答案 1 :(得分:2)
您应该为此使用enum模块。如果您需要将值与整数进行比较,最好从enum.IntEnum
进行子类化