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

import und true

Beitragvon AllesMeins » Mittwoch 18. Februar 2004, 14:23

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
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 18. Februar 2004, 14:40

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 18. Februar 2004, 18:19

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 Modvoice
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Mittwoch 18. Februar 2004, 18:45

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.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 18. Februar 2004, 19:19

Es geht auch am Anfang des Scripts mit

Code: Alles auswählen

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



Gruß

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

Beitragvon akIra » Donnerstag 19. Februar 2004, 00:27

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

Code: Alles auswählen

True + True + True


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

Beitragvon Dookie » Donnerstag 19. Februar 2004, 01:08

es gibt auch Halbwahrheiten

Code: Alles auswählen

True/2.0



Dookie
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 19. Februar 2004, 13:23

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder