[Python-de] Testen, ob Variabel existiert

Diez B. Roggisch deets at web.de
Fre Sep 3 21:39:52 CEST 2004


> Weil ich nicht so wirklich die Ahnung habe. :-( Bis eben habe ich noch
> nie etwas von dicts gehört. Muss mich darüber mal schlau machen.
>
> Laut meinem schlauen Büchlein werden dicts mit dict() oder dict(Inhalt)
> aufgerufen. Warum verwendest du hier progs = {} ?

Aeh - man kann dicts auch mit dict() erzeugen und zB (shallow) kopieren - aber 
ueblicherweise benutzt man die eingebauten Konstruktoren {}.

Ehrlich gesagt ist es etwas erschreckend, das du von dictionaries nix gehoert 
hast - ich empfehle dir _dringend_ das python-tutorial mal durchzuarbeiten. 
Denn dicts sind dermassen grundlegend, das zu befuerchten ist das du 
sonstewas fuer Klimmzuege machst in deinem Code, wenn du sie nicht betutzt.

> Ich muss doch bei gtk.RadioButton eine Gruppe von RadioButton angeben,
> wenn immer nur ein RadioButton aktiv sein darf. Wenn ich die Gruppe auf
> ProgA beziehe, kann es ein Problem geben, wenn ProgA nicht existiert,
> sondern erst ProbB.
>
> Die Übergabe der Variabel group für die Gruppe schien mir am
> einfachsten. Bzw. war die einzige Lösung, die mir eingefallen ist.

Ich verstehe das immer noch nicht - was willst du denn wie gruppieren?

> Es gibt nur, oder hat nur vier Pfadmöglichkeiten zu geben. ;-) Und die
> habe ich jeweils mit pfad1 bis pfad4 in eine Variabel gepackt. Damits
> nicht so lang wird, hab ich hier die letzten Zwei unterschlagen. Aber
> wegen die vier Möglichkeiten habe ich ja auch jeweils or mit eingebaut.

Na, das ist aber sehr blauaeugig - warum genau 4? Und bloss weil es dann mal 
doch 5 sind den Code an tausend Stellen anfassen muessen? Das ist schlecht - 
besser eine (globale) Liste, die die Suchpfade enthaelt. Die muss man dann 
nur einmal anpassen - eventuell sogar per config.

Hast du denn wenigstens mit Listen zu tun gehabt bisher?
>
> > paths = ["pfad1", "pfad2"]
> > prognames = ["prog1", "prog2]
> >
> > for progname in prognames:
> >     found = False
> >     for path in paths:
> >         if access(os.path.join(path, progname)):
> >             break
> >     print "Found %s at %s" % (progname, path)
>
> Das muss ich mir noch genauer anschauen. Auf den ersten Blick und meinem
> Verständnis müsste ich das doch sowohl für mein Problem, als auch für
> die Tests nehmen können.

Klar, innerhalb des 

if Found:

in meinem korrigierten Beispeil steht praktisch der Code fuer die 
gui-elemente. Das dict muss nat. vorher nur einmal initialisiert werden.

MfG Diez