在Python中获取变量的名称

Art*_*oul 15 python variables

如果我有任何类型的本地/全局变量,var如何获取其名称,即字符串"var"?即对于某些虚函数或运算符,nameof()下一个代码应该可以工作:

var = 123
assert nameof(var) == "var"
Run Code Online (Sandbox Code Playgroud)

有用于.__name__获取变量保存值的函数或类型对象的名称的属性,但是是否有类似的用于获取变量本身的名称的属性?

这是否可以在不将变量包装到某个神奇对象中的情况下实现,就像某些库为了获取变量名称所做的那样?如果没有魔术包装器就无法实现,那么用于这种情况的最常见/流行的包装库是什么?

Fri*_*les 23

您可以使用包 python-varname 来执行此操作:https://github.com/pwwang/python-varname

第一次运行pip install varname。然后看下面的代码:

from varname import nameof
var = 123
name = nameof(var)
#name will be 'var'
Run Code Online (Sandbox Code Playgroud)


Sum*_*rod 20

对于 Python 3.8 及更高版本,您可以尝试这种不太漂亮的方法,但它适用于任何具有 str 方法的 python 对象:

var = 123
var_name = f'{var=}'.partition('=')[0]
Run Code Online (Sandbox Code Playgroud)

  • 这个答案没有用,因为代码使用变量的名称,这是您应该获得的,而不是提供的。你可以只写 `var_name = 'var'` 而不是你的代码行。 (3认同)
  • @Georg:……在这种情况下,你可能会输错“var”。重点可能是检查(通过 linter)包含变量名称的字符串是否确实是变量名称并且没有输入错误 (2认同)