python - 返回函数 - 获取变量名称

时间:2014-01-19 03:30:27

标签: python-2.7

我想知道是否可以使用return函数并获取变量名

p.s ^帮助改写上面的行

如果你不明白,这是代码:

def foo():

    return <get variable name here>

a = foo()

因此,它会将'a'返回给变量a,'b'返回变量b,依此类推,这意味着

变量将包含其名称。

是否有函数返回变量的名称?

2 个答案:

答案 0 :(得分:1)

你能写出你需要的东西吗?

没有办法按你的意愿去做。但是你可以: - 不返回就这样做,只需在函数外定义变量即可 - 返回像{'a':变量}这样的字典 还有其他可能性,仅取决于你想做什么。

答案 1 :(得分:0)

重要:这很丑陋,可能是做你想做的事情的错误方式。向我们展示整个用例,以便我们能够帮助您选择更好的解决方案。

这几乎是可能的。让我们考虑一下:

g = True

def foo(val):
    a = 5
    b = "abc"
    return XXX

如果XXX"g"True,则"a"val5"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>

当然,可能有许多具有相同值的名称,如果有的话,将返回该名称的随机名称。例如,ab都有值5,而5作为val传递,无法分辨哪一个是locals()返回。

我重复一遍。无论你怎么做,这都是错误的(概率为99.999%)。当globals()和{{1}}可能出现时,有一些非常特殊的情况,但我不认为这是其中一种情况。

==编辑==

我终于明白你想获得你绑定的变量的名称。可能有些篡改堆栈跟踪可能对你有所帮助,但是再次 - 这是错误的。