将模块中的数值转换为其变量

2024-09-30 18:19:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python2.7中,将整数值转换为具有该值的模块范围常量的名称的最佳/最简单/最“pythonic”的方法是什么?你知道吗

如果有一种方法可以将变量名的搜索范围限定为以魔法前缀开头的变量名,则会获得额外的积分。你知道吗

换句话说:

EVT_FOO =0x0001
EVT_BAR =0x0002
EVT_SPAM=0x0004
EVT_EGGS=0x0008

def getEvtName( val ):
    """ This should return 'EVT_FOO' when given the number 0x1 """
    pass 

我知道我可以创建一个字典来进行反向查找,但是我想在Python中有更好的方法。建议?你知道吗


Tags: 模块方法名称foodef魔法bar整数
1条回答
网友
1楼 · 发布于 2024-09-30 18:19:33

如果全局对象:

>>> EVT_FOO =0x0001
>>> EVT_BAR =0x0002
>>> EVT_SPAM=0x0004
>>> EVT_EGGS=0x0008
>>> 
>>> def getEvtName( val ):
...     return next((i for i,j in globals().iteritems() if j==val and i.startswith(something)),None)
... 
>>> getEvtName(0x0001)
'EVT_FOO'

相关问题 更多 >