import und true

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
AllesMeins
User
Beiträge: 63
Registriert: Donnerstag 20. November 2003, 13:45
Wohnort: Frankfurt/M.

Hiho,

ich stehe gerade vor einem ziemlich seltsamen Problem.

Bisher habe ich from wxPython.wx import * benutzt um das Modul zu importieren. Nun habe ich prübiert das etwas einzuschränken und den Befehl so umgeschrieben:

from wxPython.wx import wxFrame, wxTextCtrl, wxMenu, wxMenuBar

Und seit dem kennt Python plötzlich kein true und false mehr. An einer komplett anderen Stelle des Scriptes taucht plötzlich dieser Fehler auf:

File "runonce.py", line 144, in erweitert
zeige = true;
NameError: name 'true' is not defined

Allerdings ist an dieser Stelle weit und breit keine GUI oder dergleichen verwendet. Das ist eine eigenständige Funktion die erst mal direkt nichts mit den GUI Funktionen zu tun hat. Wenn ich wieder den alten import befehl nehme, funktioniert wieder alles. Hat irgendwer eine erklärung dazu, wie sowas zustande kommen kann? Ich meine true und false sind ja nunmal nicht ganz unwichtige Bestandteile einer Sprache, wie können die plötzlich weg kommen?

Grüsse
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi AllesMeins,

versuchs mal mit

Code: Alles auswählen

from wxPython.wx import wxFrame, wxTextCtrl, wxMenu, wxMenuBar, true
oder verwende unter Python 2.3 den boole-Type mit den Konstanten True bzw. False


Gruß

Dookie
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

True und False sind erst ab Python 2.2 vorhanden, du kannst aber eine abfrage machen:

Code: Alles auswählen

if [Python version ist kleiner als 2.2]:
    True = 1
    False = 0
wx definiert scheinbar selbst ein true und flase, da ist aber gar nicht schön.

Spielerei für Python 2.3 (interaktive shell):

Code: Alles auswählen

True + True + True
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Leonidas hat geschrieben:wx definiert scheinbar selbst ein true und false
Hi. Es scheint so zu sein, weil die dann immer versionsunabhängig da sind. Das wurde wahrscheinlich nur zur besseren Lesbarkeit des Quellcodes gemacht, weil bei den vielen Nullen und Einsen kann man sonst schnell den Überblick verlieren.

Milan

ps: die Abfrage der Pythonversion ist mit sys.version_info möglich.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Es geht auch am Anfang des Scripts mit

Code: Alles auswählen

if not getattr(__builtins__,"True",0):
    True = 1
    False = 0

Gruß

Dookie
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

Leonidas hat geschrieben: Spielerei für Python 2.3 (interaktive shell):

Code: Alles auswählen

True + True + True
8)
[i]...und ich glaube ich habe eine Zwei gesehen[/i]
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

es gibt auch Halbwahrheiten

Code: Alles auswählen

True/2.0

Dookie
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Milan hat geschrieben:Hi. Es scheint so zu sein, weil die dann immer versionsunabhängig da sind. Das wurde wahrscheinlich nur zur besseren Lesbarkeit des Quellcodes gemacht, weil bei den vielen Nullen und Einsen kann man sonst schnell den Überblick verlieren
Ja, ich mache es ja auch bei Python 2.1, das ist schon praktisch.

True steht auch in Python 2.3 für eine 1, aber bei type(True) ist es ein bool. Schön kompatibel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten