【发布时间】:2017-11-14 11:07:07
【问题描述】:
出于调试目的,我经常需要打印变量,我发现了解这些变量是什么也很有帮助。所以我想有一个功能可以做以下事情:
from __future__ import print_function
def get_variable_name(my_variable):
... ?
def print_with_variable_name(my_variable):
print (get_variable_name(my_variable), ': ', my_variable)
a = 30
print_with_variable_name(a);
预期输出:
a: 30
我找到了一些问题的部分解决方案,我只能在函数由名称 a 定义的函数中执行此操作,否则会打印:
my_variable: 30
有什么优雅的解决方案可以解决这个问题,我可以用这个新的打印功能编写一个模块并将它导入到我喜欢的任何地方?
【问题讨论】:
-
这很棘手。 Python 对象不知道它的名字:它可能没有名字,或者有多个名字。 OTOH,某些对象类型(例如普通的
def函数)具有.__name__属性。一个更简单的计划是编写一个接受名称 string 的函数,然后它可以使用它来查看是否有一个对象绑定到该名称。顺便说一句,您可能会发现这篇文章很有帮助:Facts and myths about Python names and values,由 SO 资深人士 Ned Batchelder 撰写。 -
简短回答:你不能。在一些特殊情况下,您可以使用肮脏的技巧来获取一个绑定到对象的可能名称,但没有一个是通用的也不可靠的。
-
我刚刚在链接问题的my answer 末尾添加了一些您可能会感兴趣的代码。
标签: python python-2.7 variable-names