在 Python3 中在运行时获取局部变量的名称

Getting name of local variable at runtime in Python3

我想在函数中获取变量名所以这里:

def foo(bar):
    print(getLocalVaribalename(bar))

我要打印'bar'。 所以我找到了全局变量的代码

def varName(variable,globalOrLocal=globals()):
    for name in list(globalOrLocal.keys()):
        expression = f'id({name})'
        if id(variable) == eval(expression):
            return name

然后我像这样向它发送了varName(bar,locals())

def foo(bar):
    print(varName(bar,locals()))

但给出 NameError: name 'bar' is not defined 错误。

我还找到了 Getting name of local variable at runtime in Python 用于 python 2 但语法完全不同。请注意,主要目标是获取局部变量的名称,不一定使用此代码(前面几行定义的 varName 函数)。

import sys
def getlocalnamesforobj(obj):
    frame = sys._getframe(1)
    return [key for key, value in frame.f_locals.items() if value is obj]

这会内省调用函数的局部变量。 当然,一个明显的问题是,可能有多个名称指向同一个对象,因此函数 returns 名称列表。

然而,正如评论中所说,我无法理解这在任何实际代码中有何用处。

根据经验,如果您需要变量名称作为数据(字符串),您可能应该使用字典来存储数据。