【问题标题】:print name of variable not it's value in Python [duplicate]打印变量的名称而不是Python中的值[重复]
【发布时间】:2016-07-07 01:41:38
【问题描述】:

我有变量

street_38 = (4,6,7,12,1,0,5)

有没有办法实际打印名称而不是值? 那就是我只是对获得“street_38”感兴趣。我想要那个,因为我正在绘制一个数字,并且当我放置时

plt.title(str(street_38)

作为标题,我得到的是值而不是名称

谢谢

【问题讨论】:

  • plt.title("street_38") 有什么问题?这是一个严重的问题。请解释为什么字面名称对您没有用处,因为这将有助于人们为您的问题制定一个好的解决方案。
  • 这个解决方法怎么样:street_38 = ('street_38', 4, 6, 7, 12, 1, 0, 5)?这样street_38 就是你的元组的第一个元素。
  • 听起来您使用了错误的数据类型。因为我猜你这里有不止一条街道,所以将它变成像streets = {'street_38': (4,6,7,12,1,0,5)} 这样的字典可能是有意义的,然后当你遍历你的街道时(我猜你要做什么),只需打印键值本身for street_name, values in streets.items():plt.title(street_name)
  • 感谢 Kelvin,是的,这听起来是个好主意

标签: python string


【解决方案1】:

来自this answer,你可以这样做

 >>> a = 1
 >>> for k, v in list(locals().iteritems()):
         if v is a:
             a_as_str = k
 >>> a_as_str
 a
 >>> type(a_as_str)
 'str'

话虽如此,这不是一个好方法。 Python 对象没有名称。相反,namesobjects。一个轻微的例外是函数的__name__ 属性,但规则是相同的——我们只是将名称存储为属性。对象本身仍未命名。

上述方法滥用locals()方法。这并不理想。更好的方法是将数据重组为字典之类的东西。字典具体来说是一组命名值。

{
    'street38': (4,6,7,12,1,0,5)
}

字典的重点是这种键值关系。这是一种根据名称查找值的方法,这正是您想要的。你可能遇到的另一个问题(取决于你在这里做什么)是如果有成千上万条街道会发生什么。当然你也不想写出成千上万的变量名。

【讨论】:

    【解决方案2】:

    没有一种的方式来以编程方式执行此操作。理想情况下,变量的名称对代码完全没有意义。它仅在向程序员传达想法时有用,以便他们知道自己在使用什么。

    【讨论】:

      猜你喜欢
      • 2019-12-23
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2018-12-23
      • 2023-01-22
      相关资源
      最近更新 更多