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?
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. –
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. –
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. –