如何在python中打印varible名称

时间:2015-06-08 17:49:03

标签: python python-3.x

我有变量print(fruit),当我13时,我得到'fruit'

如何打印变量名称以便打印出print('fruit')?我不想使用{"paths": [ "/var/www/logs/access.log" ], "fields": { "type": "apache", "virtualhost": "zzz.gov.mv" }, "dead time": "24h" } ,因为我将使用函数。

5 个答案:

答案 0 :(得分:2)

你要找的是字典。

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

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

结果:

fruit 13
vegetable 15

答案 1 :(得分:0)

只需print next字典中的locals键,即可获得所需值。 13以下是值:

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

答案 2 :(得分:0)

您可以使用dictionaryfor - 循环iterating through it来实现类似的行为:

#!/usr/bin/env python3
# coding: utf-8

# define a dict with sample data
d = {'fruit': 13}

# print keys and values of sample dict
for key, val in d.items():
    print(key, val)

输出如下:

fruit 13

答案 3 :(得分:0)

你可以这样做。

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'>
>>>

如果您喜欢

,也可以在命名空间中的变量中创建一个对象
b = {globals()[n]: n for n in globals() if globals()[n] is fruit}

然后你可以通过该对象的值获取名称文本

print b[fruit]

输出:

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

答案 4 :(得分:0)

虽然有办法做到这一点,(我个人认为字典是你想要的)我想解释为什么许多人都在跟它说话,因为从表面上看,它看起来很漂亮合理的任务。

但是,在Python(以及我能想到的大多数其他语言)中,这是如此困难的原因。原因在于,在大多数情况下,人们可以将变量名称视为简写,以实现真正的基础含义。大多数语言的设计理念是更改速记不应更改代码的输出。

假设你有这样的代码:

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

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