python code radikal verkuerzen

Du hast eine Idee für ein Projekt?
BlackJack

Montag 30. April 2007, 19:35

@joost: Also ich bekomme in jedem Fall bei ein `SyntaxError` bei einem 'ä' in einem Namen. Wenn das bei Dir geht, dann ist das ein Bug.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Montag 30. April 2007, 19:58

lumax hat geschrieben:Wo wir gerade bei den Encoding-Deklarationen sind: Wieso hat sich eigentlich die Emacs-Syntax dafuer so durchgesetzt? Ich sehe da eigentlich nie andere Varianten, obwohl sie moeglich sind.
Sie schaut nett aus und mein Vim kann damit umgehen.
TUFKAB – the user formerly known as blackbird
lunar

Montag 30. April 2007, 20:30

lumax hat geschrieben:Wo wir gerade bei den Encoding-Deklarationen sind: Wieso hat sich eigentlich die Emacs-Syntax dafuer so durchgesetzt? Ich sehe da eigentlich nie andere Varianten, obwohl sie moeglich sind.
Das ist eine globale Verschwörung von birkenfeld zur Vernichtung des VIM...
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 30. April 2007, 20:59

Weil Emacs r00le7?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 30. April 2007, 21:08

Ja, BlackJack, ich heute auch. Erinnere mich offenbar falsch an den Versuch mit 'ä' - hab ein bißchen viel um die Ohren zur Zeit. In der idle kann man Code mit Sonderzeichen in der Source zum Laufen bringen, lässt sich unter Options/General einstellen. Das hier läuft dann:

Code: Alles auswählen

läst = 'Hello world !'
print läst
Aber nur wenn man KEINE coding-Zeile am Anfang des Programms hat. Heißt: Finger weg davon. Japaner können also ihren Code noch immer nicht in originärem Japanisch eingeben (finde eigentlich, dass sie das können sollten, und hatte das Vorhandensein einer Möglichkeit dazu eigentlich erwartet).

Damit hat die coding-Zeile also nur den Zweck, die Tabelle für den u-Operator einzustellen. Aufschlussreich !
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 30. April 2007, 21:10

Das "u" ist kein Operator, sondern gehört zum Stringliteral dazu.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 30. April 2007, 21:20

Unter Operator verstehe ich eine Art Kürzel für eine function mit gleichzeitig veränderter Syntax wie x+y für __add__(x,y). Dann ist u sehr wohl ein Operator. Vielleicht ein etwas sehr Python-fixiertes Verständnis, aber nicht falsch. Oder ist die Zweistelligkeit miteintscheidend ? Dann wäre u halt ein Operator in verallgemeinertem Sinne.
BlackJack

Montag 30. April 2007, 21:30

Entscheidend ist, dass das 'u' nur eine Bedeutung für den Compiler hat und Teil der Syntax ist. Während das ``+`` zum Beispiel zur Laufzeit wirklich eine Funktion anstösst, gibt es das 'u' zur Laufzeit gar nicht mehr.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 30. April 2007, 21:30

Nein, es ist ein integraler Bestandteil des Unicodeliterals, keine Anwendung einer Funktion.

Konsequenterweise müsstest du sonst auch den Punkt in `23.` einen Operator nennen.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 30. April 2007, 21:57

Seh' ich ein. Als Operator müsste u ja auch auf Variable wirken können. Kann's nur auf Konstanten (und damit zur Laufzeit verschwunden sein). Ja, das ist etwas wirklich anderes, welches "Operator" zu nennen mindestens eine grobe Schlampigkeit ist. :)
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Donnerstag 10. Mai 2007, 10:19

Wollte damit sagen, dass

Code: Alles auswählen

# coding -*- utf-8 -*-
eigentlich fast eine no-op ist.
Weil in diesem Bereich so viel Verwirrung herrscht und wegen Drittlesern: Das war UNSINN. Um es noch einmal ganz klar festzustellen: Python verwendet intern die - abstrakten - Unicode-Codepoints. Das ist etwas ganz anderes als utf-8 und obige Codierungsanweisung insofern auch nie eine no-op. Ich finde hier eigentlich gute Beiträge zum Thema, z.B. http://www.python-forum.de/topic-5095.html. Der Satz daraus
Python verwendet als Basis Unicode!
wäre allerdings viel deutlicher, wenn das Wort 'codepoints' darin vorkäme. Jeder, der einmal Doku zum Thema sucht, ist sowieso schon auf diesen Begriff gestoßen und sollte ihn dann kennen. Sorry wegen meines Unsinns oben - ich hatte hier bisher dicke Tomaten auf den Augen. :oops:
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
Antworten