Ich habe wiedermal keine Antwort auf eine ganz simple Sache gefunden:
Wie prüfe ich in Python ob eine Variable initialisiert wurde? In PHP geschah das ja mit isset(), oder empty().
Genauso hat mich gewudert, dass ich zwar für ein Dic mit has_key prüfen kann ob der Wert gesetzt ist, aber für eine Liste habe ich nichts vergleichbares gefunden.
Bitte danke Aufklärung wenn möglich
Stolzi
Ist Variable gesetzt?
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Teil Eins ist doch ganz einfach:
Und Teil 2, mit der Liste.....
Wenn du wissen willst, ob ein Wert in der Liste ist :
Analog dazu , wenn d nicht vorhanden, reagierst du auf den NameError
MfG, querdenker
Code: Alles auswählen
try:
if banane: print "set"
except NameError:
print "unset"
Wenn du wissen willst, ob ein Wert in der Liste ist :
Code: Alles auswählen
d=[33,44,55]
if 33 in d:
print "Treffer"
MfG, querdenker
Hi!
Joe
Und was machste, wenn banane == 0 ist? Dann ist die variable weder "set" noch "unset". Dann schon eher:querdenker hat geschrieben:Code: Alles auswählen
try: if banane: print "set" except NameError: print "unset"
Code: Alles auswählen
try:
banane
print "set"
except NameError:
print "unset"
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Stimmt.
Das kommt davon, wenn man morgens noch keinen Kaffee hatte
mfg, querdenker
Das kommt davon, wenn man morgens noch keinen Kaffee hatte
mfg, querdenker
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi,
ich würd das eher so machen:
Gruß
Dookie
ich würd das eher so machen:
Code: Alles auswählen
if "banane" in locals():
print "banane is set!"
else:
print "banane is not set!"
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja die try variante ist echt besser, denn variablen sind an sehr verschiedenen orten zu finden. Im ASPN Python Cookbook gibts dazu auch ein Rezept.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hab ich nicht geschrieben . Wenn man einen festen Namen sucht, mag das zutreffen, aber ich bevorzuge locals und globals. Dann kann ich den Variablennamen selbst in einer Variablen speichern:Leonidas hat geschrieben:Ja die try variante ist echt besser...
Code: Alles auswählen
name_ges="test"
test="12345 hallo"
if name_ges in locals():
print "gesetzt:",locals()[name_ges]
elif name_ges in globals():
print "gesetzt:",globals()[name_ges]
else:
print "ungesetzt"
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Zukünftige Python versionen?Milan hat geschrieben:So hast du den Vorteil, event. viele Variablen gleichzeitig in einer for-Schleife suchen zu können. Ich wüsste auch nicht, wo die wenn noch vorkommen sollten, wenn sie weder global noch lokal sind...
Auf jeden Fall hier noch das Rezept: http://aspn.activestate.com/ASPN/Cookbo ... cipe/59892
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dann kann man dnn aber den Docu Teil "Porting to Python X.Y" lesen. Mir ist dafür ein sinnvolles Beispiel eingefallen, um dir mal ein wenig recht zu geben: Wenn ich in Klassen ein Attribut aufrufen will, wird es nicht als self.xyz in locals oder globals stehen (dann muss hasattr ran). Trotzdem bleib ich dabei, es gibt meiner Meinung nach keinen sinnvollen Weg mit try dynamisch Namen zu überprüfen und auszulesen.Leonidas hat geschrieben:Zukünftige Python versionen?
Auf jeden Fall hier noch das Rezept: http://aspn.activestate.com/ASPN/Cookbo ... cipe/59892
mfg Milan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, das kann man. Aber erstmal wundert man sich lange bis es geht und zweitens weis der end user das ja nicht, kann also es nicht ändern und verschiebt dein prog nach /dev/null.Milan hat geschrieben:Dann kann man dnn aber den Docu Teil "Porting to Python X.Y" lesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice