2017-09-06 1 views
-1

Je veux utiliser une fonction qui peut imprimer automatiquement la variable et la valeur. Comme indiqué ci-dessous:Python: imprime le nom et la valeur de la variable facilement

num = 3 
coolprint(num) 

sortie:

num = 3 

En outre, il serait cool si elle pourrait aussi faire quelque chose comme ceci:

variable.a = 3 
variable.b = 5 
coolprint(vars(variable)) 

sortie:

vars(variable) = {'a': 3, 'b': 5} 

Y at-il une fonction comme c'est déjà là? Ou devrais-je faire le mien? Merci

+0

chèque pprint il peut faire ce que vous voulez –

+0

Python ne supporte pas. Les fonctions ne voient que les objets, pas les noms de variables. 'coolprint' n'a aucune idée que le' 3' vient d'une variable appelée 'num'. – user2357112

+1

Il est tout simplement impossible de localiser la bonne variable, car vous pouvez avoir plusieurs variables pointant vers la même valeur. –

Répondre

0

J'ai découvert la réponse est Non. Il n'y a aucun moyen de le faire. Cependant, votre meilleur pari est quelque chose comme ceci:

from pprint import pprint 

def crint(obj, name): 

    if isinstance(obj, dict): 
     print '\n' + name + ' = ' 
     pprint(obj) 

    else: 
     print '\n' + name + ' = ' + str(obj) 

cette façon, vous pouvez juste faire:

crint(vars(table.content[0]), 'vars(table.content[0])') 

ou:

j = 3 
crint(j, 'j') 
+1

Une autre alternative possible consiste à utiliser une structure de données de mappage telle qu'un dictionnaire. –

1

Une façon officielle pour accomplir cette tâche malheureusement n » Il existe même si cela peut être utile pour beaucoup de gens. Ce que je suggérerais et que j'ai parfois utilisé dans le passé est le suivant (je ne suis pas sûr que ce soit la meilleure façon de le faire).

Fondamentalement, ce que vous pouvez faire est de créer un objet personnalisé qui imite le type de données d'un Python à la fois. Ci-dessous, vous pouvez trouver un exemple pour un entier.

class CustomVariable(object): 

    def __init__(self, name, value): 
     self.name = name 
     self.value = value 

    def __str__(self): 
     return "{} = {}".format(self.name, self.value) 

    def __add__(self, val) : 
     return self.value + val 


myVar = CustomVariable("myVar", 15) 
print myVar 
myVar = myVar + 5 
print myVar 

Output: 
myVar = 15 
myVar = 20 

Vérifiez la méthode spéciale nommée "___str____"