2017-11-14 3 views
-1

Ich muss oft Variablen für Debugging-Zwecke drucken, und ich fand heraus, dass es hilft, auch zu wissen, was diese Variablen sind. So würde Ich mag eine Funktion haben, die Art der folgenden Fälle:Wie finde ich den Namen einer Variablen in Python 2.7.9?

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); 

Erwartete Ausgabe:

a: 30 

fand ich einige Teillösungen für das Problem, wo ich tun könnte, dass nur in der Funktion, in die Funktion mit dem Namen a definiert wurde, sonst wäre es drucken:

my_variable: 30 

gibt es eine elegante Lösung für das Problem, wo ich nur ein Modul mit dieser neuen Druckfunktion schreiben kann und i mport es wo immer ich will?

+2

Das ist schwierig. Ein Python-Objekt kennt seinen Namen nicht: Es darf keinen Namen oder mehrere Namen haben. OTOH, einige Objekttypen (zB normale 'def 'Funktionen) haben ein' .__ name__' Attribut. Ein viel einfacherer Plan besteht darin, eine Funktion zu schreiben, die einen Namen _string_ akzeptiert, mit dem dann festgestellt werden kann, ob ein Objekt an diesen Namen gebunden ist. Übrigens, Sie können diesen Artikel hilfreich finden: [Fakten und Mythen über Python-Namen und Werte] (http://nedbatchelder.com/text/names.html), die von SO-Veteran Ned Batchelder geschrieben wurde. –

+1

Kurze Antwort: Sie können nicht. Es gibt einige spezielle Fälle, in denen Sie mit schmutzigen Tricks _on_ der möglichen Namen an ein Objekt binden können, aber keines ist generisch oder zuverlässig. –

+1

Ich habe gerade einen Code am Ende von [meine Antwort] (https://Stackoverflow.com/a/31358785/4014959) in der verknüpften Frage hinzugefügt, die Sie vielleicht interessant finden. –

Antwort

1

Versuchen mit Wörterbuch: dict((name,eval(name)) for name in ['list', 'of', 'vars'])

+0

Dies wird nicht flexibel genug sein; Ich möchte nur ein beliebiges Programm ohne Overhead hinzufügen (außer dem Import selbst) – alinafdima

0

Ich würde vorschlagen, ein Wörterbuch zu verwenden, wenn das wird passen, wie Ihr Programm funktioniert (Viele verschiedene Variablen). Das Wörterbuch ermöglicht es Ihnen, den Wert und den Namen der Werte zu erfassen.

Verwandte Themen