Variablenname auslesen

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
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Samstag 17. Oktober 2009, 19:07

Hallo Community,

ich mach es knapp:

Gibt es eine Möglichkeit so etwas zu machen:

Code: Alles auswählen

test = irgendeinobjekt
result = gesuchtefunktion(test)

print result // Ausgabe: "test"
print type(result) // Ausgabe "<type 'str'>"
Sprich, ich will verhindern, sachen doppelt zu schreiben, wenn der Variablennamen eigentlich schon ausreicht.

Sowas will ich verhindern:

Code: Alles auswählen

result = gesuchtefunktion(test, "test")
Vielen Dank!
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Samstag 17. Oktober 2009, 19:19

Ich mach es auch knapp: Nein, kann man nicht.

Ein Objekt kann an mehrere Namen gebunden werden, deshalb ist das auch kein sinnvoller Weg.

Was willt du eigtl erreichen?
Benutzeravatar
pillmuncher
User
Beiträge: 1268
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Samstag 17. Oktober 2009, 19:19

Suchst du vielleicht das hier?
In specifications, Murphy's Law supersedes Ohm's.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Samstag 17. Oktober 2009, 19:26

Also was ich erreichen will ist folgedens:

Ich habe eine Liste, die ich in eine Datei schreiben will. Die Datei brauch natürlich einen Dateinamen. Dieser wird aber durch den Variablennamen bereits ausreichend betituliert.

Also so was wie:

Code: Alles auswählen

ergebnis005 = [ liste ] #liste mit den datensätze die ich rausschreiben will

erzeugedatei(ergebnis005) #schreibt das ergebnis in eine datei
Dieser Code soll die datei "ergebnis005.txt" erzeugen.

So, nun wäre es nicht sonderlich pythonic nochmal sowas wie

Code: Alles auswählen

erzeugedatei(ergebnis005, "ergebnis005")
,
da ja der Variablenname bereits genug über die Datei aussagt.

Versteht ihr mich?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Samstag 17. Oktober 2009, 19:31

Nein, es waere nicht `pythonic`, denn "Explicit is better than implicit".

Aber wenn du denn unbedingt so etwas machen willst, solltest du ein Dictionary benutzen.
lunar

Samstag 17. Oktober 2009, 19:31

cofi hat geschrieben:Ich mach es auch knapp: Nein, kann man nicht.
Kann man doch.

Nutzen sollte man das selbstverständlich nicht.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Samstag 17. Oktober 2009, 19:38

Kurzum, ich würdes also auch

createfile(guternamefuerdatei,"guternamefuerdatei")

schreiben

oder gleich die Struktur der Liste wie cofi gesagt hat in ein Dictionary packen?
EyDu
User
Beiträge: 4877
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Samstag 17. Oktober 2009, 20:42

Und warum schreibst du nicht einfach

Code: Alles auswählen

guter_name_fuer_datei = create_file("guter_name", daten)
? So wie ich das sehe, möchtest du nur eine Datei erzeugen. Willst du viele Namen haben, dann ist ein Dictionary der richtige Weg.
Das Leben ist wie ein Tennisball.
Benutzeravatar
bwbg
User
Beiträge: 386
Registriert: Mittwoch 23. Januar 2008, 13:35

Montag 19. Oktober 2009, 07:34

anogayales hat geschrieben: (...)

Code: Alles auswählen

ergebnis005 = [ liste ] #liste mit den datensätze die ich rausschreiben will

erzeugedatei(ergebnis005) #schreibt das ergebnis in eine datei
(...)
Versteht ihr mich?
Ja, aber keine gute Idee. Wenn man anfängt, Variablen durch zu nummerieren, dann spricht schon vieles für eine Liste. Meine spontane Idee:

Code: Alles auswählen

>>> ergebnisse = []
>>> ergebnisse.append([1, 2, 3, 4, 5, 6, 7])
>>> ergebnisse.append(['Hallo', 'Welt', '!'])
>>> ergebnisse.append(['mixed', 1, 2, 3])
>>> for index, value in enumerate(ergebnisse):
...     filename = 'ergebnis{0}.txt'.format(index)
...     print 'Schreibe: {0} in Datei {1}'.format(value, filename)
...
Schreibe: [1, 2, 3, 4, 5, 6, 7] in Datei ergebnis0.txt
Schreibe: ['Hallo', 'Welt', '!'] in Datei ergebnis1.txt
Schreibe: ['mixed', 1, 2, 3] in Datei ergebnis2.txt
Grüße... Heiko
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Antworten