如何在python中打印可变名称

如何在python中打印可变名称,python,python-3.x,Python,Python 3.x,我有一个变量fruit=13,当我打印fruit时得到13 如何打印变量名,以便打印“水果”?我不想使用print'fruit',因为我将使用函数。您要找的是一本字典 food = {'fruit':13, 'vegetable':15} for item in food: print(item, food[item]) 结果: fruit 13 vegetable 15 只需使用所需的值打印本地词典中的下一个键。以下13是值: print next(k for k, v in l

我有一个变量fruit=13,当我打印fruit时得到13


如何打印变量名,以便打印“水果”?我不想使用print'fruit',因为我将使用函数。

您要找的是一本字典

food = {'fruit':13, 'vegetable':15}

for item in food:
    print(item, food[item])
结果:

fruit 13
vegetable 15
只需使用所需的值打印本地词典中的下一个键。以下13是值:

print next(k for k, v in locals().items() if v == 13) # get variable that is equal to 13

通过使用for循环和for循环,可以实现类似的行为:

输出如下所示:

fruit 13

你可以这么做

print [n for n in globals() if globals()[n] is fruit][0]

>>> fruit = 13
>>> n = None
>>> print [n for n in globals() if globals()[n] is fruit][0]
fruit
>>> b = None
>>> b = [n for n in globals() if globals()[n] is fruit][0]
>>> b
'fruit'
>>> type(b)
<type 'str'>
>>>
然后可以通过该对象的值获取名称文本

print b[fruit]
输出:

>>> b = {globals()[n]: n for n in globals() if globals()[n] is fruit}
>>> b
{13: 'fruit'}
>>> fruit
13
>>> b[fruit]
'fruit'

虽然有很多方法可以做到这一点,但我个人认为字典是你想要的。我想解释一下为什么很多人对它犹豫不决,因为从表面上看,这似乎是一项相当合理的任务

但这在Python和我能想到的大多数其他语言中是如此困难的,这是有原因的。原因是,在大多数情况下,人们可以将变量名看作是大脑中真实的潜在含义的简写。大多数语言的设计理念是更改速记不应更改代码的输出

假设您有如下代码:

fruit = 10
print('Amount of fruit', fruit)

我们可以为水果选择一百万个名称——水果数量、水果数量等等。但变量所代表的一个基本概念是:水果数量。因此,如果您想要数字标签,请使用基本概念的名称。

为什么要这样做?因此,如果我打印变量,阅读变量的人将知道数字对应的内容。您的最后一句话不在后面。使用函数只意味着您将一个变量传递给函数,并使用函数声明指定的名称将其打印出来。看起来非常类似于,如果您能在心里找到它,请不要向下投票。对于新程序员来说,这并不像对于我们那么明显,为什么这是一个糟糕的问题。向下投票不会教任何东西。我想他想后退,找到一个给定值的键。谢谢,这真的很有帮助。请勾选我的答案,将问题标记为已回答。
>>> b = {globals()[n]: n for n in globals() if globals()[n] is fruit}
>>> b
{13: 'fruit'}
>>> fruit
13
>>> b[fruit]
'fruit'
fruit = 10
print('Amount of fruit', fruit)