Den Namen der Übergabeparameter rausfinden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pythonich
User
Beiträge: 5
Registriert: Montag 26. Juni 2006, 08:29

Ich hane folgenden Quellcode:
eine Funktion:
def test(a):
print a

und der Aufruf:
i = 7
test(i)

Meine frage ist, ob ich in Python irgendwie den Namen der Variable i in der Funktion test rausfinden kann. Ich will folgendes realisieren:

def test(a):
print 'Variable' + NameDerVariable + ' = ' + a

dafür fehlt mir praktisch den Namen der Variable i
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

von mir noch ein nachträgliches: Herzlich willkommen im Forum!
Aber: Wozu soll das bitte gut sein? Also, ich habe es noch nicht umgesetzt gesehen - was womöglich nicht viel heißen will.
Je nachdem was Du tatsächlich erreichen willst, hilft es vielleicht ein Dictionary zu übergeben - damit erhälst Du gleich Name:Wert-Paare und kannst auf Name und Wert zugreifen.

HTH
Christian
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Sorry, ich muss fragen, ich sehe nämlich so garkeinen Sinn darin: Wieso zu Hölle wilslt du das? :D

-----

Und jetzt zu Antwort: Nein
Weil: Wenn du die Variable 'i' hast, dann ist 'i' nichts weiter als ein Zeiger (ich nenn es jetzt mal so, wie in C) auf eine Stelle im Speicher in der der Inhalt dieser Variablen liegt.
Rufst du jetzt die Funktion 'test' auf, dann wird eine Kopie dieser Speicherstelle erzeugt und ein neuer Zeiger darauf erstellt und in 'a' gespeichert. Das ganze ist also völlig seperat von der Orginalvariable. Daher ist das was du willst nicht möglich.

Und außerdem ist es völlig unnötig. Wozu sollte man wissen wollen wie das Orginal einer übergebene Variable hieß?

/: Achso, falls du es doch brauchst solltest du das ganze umschreiben ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst es ja immer noch so machen:

Code: Alles auswählen

In [12]: def c(**kwargs):
   ....:     print kwargs
   ....:
In [13]: c(i='deinwert')
{'i': 'deinwert'}
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten