在 Python 中,直接获取并打印某个变量的变量名不是一件直接的事情,因为变量名只是指向对象的引用,而不是对象本身的一部分。然而,可以通过检查当前作用域中的变量名与变量值的映射来实现。
以下是一个方法,使用 globals()
或 locals()
来查找变量名:
def get_variable_name(var, scope):
names = [name for name, value in scope.items() if value is var]
return names[0] if names else None
# 示例
my_var = 42
var_name = get_variable_name(my_var, globals()) # 或者使用 locals()
print(f"变量名: {var_name}")
代码说明:
-
scope
参数:- 如果变量在全局作用域,可以传递
globals()
。 - 如果变量在局部作用域,可以传递
locals()
。
- 如果变量在全局作用域,可以传递
-
变量匹配:
- 遍历作用域中的变量名和变量值,找到值匹配的变量名。
注意事项:
- 如果多个变量指向相同的值,这种方法会返回第一个匹配的变量名。
- 这种方法只能用于调试或特殊用途,不适合在实际应用中频繁使用,因为它依赖于作用域的搜索。
此外还有一些奇技淫巧,例如print(f’{a=}')再分割出变量名a。