我希望能够以字符串的形式获取变量的名称,但是我不知道Python是否具有这么多的自省功能。就像是:
>>> print(my_var.__name__) 'my_var'
我想这样做是因为我想把一堆变量变成一个像这样的字典:
bar = True foo = False >>> my_dict = dict(bar=bar, foo=foo) >>> print my_dict {'foo': False, 'bar': True}
但是我想要比这更自动的东西。
Python具有locals()和vars(),所以我猜有办法。
locals()
vars()
您要这样做吗?
dict( (name,eval(name)) for name in ['some','list','of','vars'] )
例
>>> some= 1 >>> list= 2 >>> of= 3 >>> vars= 4 >>> dict( (name,eval(name)) for name in ['some','list','of','vars'] ) {'list': 2, 'some': 1, 'vars': 4, 'of': 3}
我已经很想这样做了。这种破解与rlotun的建议非常相似,但它是单行的,这对我很重要:
blah = 1 blah_name = [ k for k,v in locals().iteritems() if v is blah][0]
Python 3+
blah = 1 blah_name = [ k for k,v in locals().items() if v is blah][0]