【问题标题】:How do I find out the name of a variable in python 2.7.9? [duplicate]如何在 python 2.7.9 中找出变量的名称? [复制]
【发布时间】: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


【解决方案1】:

用字典试试: dict((name,eval(name)) for name in ['list', 'of', 'vars'])

【讨论】:

  • 这不够灵活;我只想添加任何我想要的程序而没有任何开销(除了导入本身)
【解决方案2】:

如果它适合您的程序的工作方式(许多不同的变量),我建议使用字典。字典将允许您获取值和值名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2010-10-10
    • 2013-04-02
    • 1970-01-01
    相关资源
    最近更新 更多