我想知道是否可以使用return函数并获取变量名
p.s ^帮助改写上面的行
如果你不明白,这是代码:
def foo():
return <get variable name here>
a = foo()
因此,它会将'a'返回给变量a,'b'返回变量b,依此类推,这意味着
变量将包含其名称。
是否有函数返回变量的名称?
答案 0 :(得分:1)
你能写出你需要的东西吗?
没有办法按你的意愿去做。但是你可以: - 不返回就这样做,只需在函数外定义变量即可 - 返回像{'a':变量}这样的字典 还有其他可能性,仅取决于你想做什么。
答案 1 :(得分:0)
重要:这很丑陋,可能是做你想做的事情的错误方式。向我们展示整个用例,以便我们能够帮助您选择更好的解决方案。
这几乎是可能的。让我们考虑一下:
g = True
def foo(val):
a = 5
b = "abc"
return XXX
如果XXX
为"g"
且True
,则"a"
为val
,5
为"b"
当val
为"abc"
时。您可以使用locals()
和globals()
检查本地和全局变量:
g = True
def foo(val):
a = 5
b = "abc"
for k, v in locals().iteritems(): # this will iterate over {"a": 5, "b": "abc"}
if v == var: # or "is" if you want identity
return k
for k, v in globals().iteritems(): # this will iterate over {"g": True, "foo": <this function>}
if v == var: # or "is" if you want identity
return k
return <default value>
当然,可能有许多具有相同值的名称,如果有的话,将返回该名称的随机名称。例如,a
和b
都有值5
,而5
作为val
传递,无法分辨哪一个是locals()
返回。
我重复一遍。无论你怎么做,这都是错误的(概率为99.999%)。当globals()
和{{1}}可能出现时,有一些非常特殊的情况,但我不认为这是其中一种情况。
==编辑==
我终于明白你想获得你绑定的变量的名称。可能有些篡改堆栈跟踪可能对你有所帮助,但是再次 - 这是错误的。