[Python-de] Was sein sollte

Martin v. Loewis martin at v.loewis.de
Mit Dez 31 11:27:45 CET 2003


Gerson Kurz wrote:

>>Willst Du das wirklich? Aus dieser Warnung wird irgendwann mal ein
>>Syntaxfehler. Dann werden sich die Leute beschweren, nicht gewarnt
>>worden zu sein.
> 
> 
> Bitte bitte sag daß das nicht wahr ist. Zeit für einen fork oder was?

Es ist wahr. Vielleicht passiert es erst 2012.

> Das ist die falsche Frage. Meine Gegenfrage lautet:
> 
> Warum muß ein Encodingproblem ein Programm hart beenden?

Das ist eine andere Frage, und Dein Vorschlag ist keine Antwort darauf.
Auch wenn Latin-1 das default encoding ist, werden Programmer
*immer noch* hart beendet, wenn ein Encodingproblem auftaucht
(beispielsweise, wenn irgendwo das Euro-Zeichen vorkommt -
was sogar in Europa vorkommen soll)

> Du willst ein Beispiel aus der Praxis?

Nein danke, ich kenne die Probleme aus der Praxis. Glaub mir:
Ich habe Deinen Wunsch verstanden. Nur kann ich Deinen
Lösungsvorschlag nicht akzeptieren.

> Also, habe ich einen String x mit einem Sonderzeichen, sagen wir das
> beliebte ü drin. Das ist NICHT "das ü der Deutschen", sondern ein Zeichen,
> welches z.B. bedeutet "Sensor x ist aktiv", klar?

Also Bytes - *keine* Zeichen (auch keine Sonderzeichen).
Stino Bytes.

> Jetzt will ich das ausgeben, z.B. so print "INPUT %s" %
> string_from_serial_port. Da gab es (dann wohl <2.3 habe ich aber nicht
> überprüft) exceptions.

Das glaube ich nicht. Wenn Du einen Byte-String hast, hat diese
print-Anweisung in keiner Python-Version je ein Problem verursacht
(höchstens vielleicht in IDLE - aber Du verwendest wohl nicht IDLE
im Wirkbetrieb teurer Geräte, oder?)

Allerdings würde ich Bytes immer mit

print "INPUT %s" % repr(string_from_serial_port)

ausgeben - es könnte ja auch sein, dass da Steuerzeichen drin
vorkommen, wenn man die Bytes als Zeichen interpretierte.

Ciao,
Martin