在 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 名称列表。
然而,正如评论中所说,我无法理解这在任何实际代码中有何用处。
根据经验,如果您需要变量名称作为数据(字符串),您可能应该使用字典来存储数据。
我想在函数中获取变量名所以这里:
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 名称列表。
然而,正如评论中所说,我无法理解这在任何实际代码中有何用处。
根据经验,如果您需要变量名称作为数据(字符串),您可能应该使用字典来存储数据。