|
| 1 | +# Python 2.7 |
| 2 | + |
| 3 | +Wir stellen nur aktuelle Versionen von Python vor. |
| 4 | +Es kann allerdings sein, dass man für manche (sehr speziellen) Einsatzzwecke Python 2.7 verwenden muss. |
| 5 | + |
| 6 | +Mit dem Erscheinen von Python 3.0 wurden einige größere Änderungen eingebracht - und die fehlen dann natürlich in 2.7. Außerdem hat die Standardbibliothek im Laufe der Zeit einige neue Module erhalten. |
| 7 | + |
| 8 | +## Aktivieren des bereits unterstützten neuen Verhaltens |
| 9 | + |
| 10 | +Python 2.7 unterstützt viele Änderungen in Python 3.0 schon - sie müssen nur noch aktiviert werden. Dazu müssen die folgenden zwei Zeilen an den Anfang (!) jeder Datei gepackt werden: |
| 11 | + |
| 12 | + |
| 13 | +```python |
| 14 | +# -*- coding: utf-8 -*- |
| 15 | +from __future__ import absolute_import, division, print_function, unicode_literals |
| 16 | +from io import open |
| 17 | +``` |
| 18 | + |
| 19 | +(Warum unbedingt an den Anfang der Datei? |
| 20 | +Syntaktisch ist das ein Kommentar und ein `import`-Statement, semantisch sind dies allerdings Anweisungen an den Compiler.) |
| 21 | + |
| 22 | +Die erste Zeile sorgt dafür, dass der Quellcode als [UTF-8](http://utf8everywhere.org/) gelesen wird. |
| 23 | +Die zweite Zeile aktiviert die neue Import-Reihenfolge, die neue Division (`/` gibt `float` zurück), die `print`-Funktion (statt einem Statement) und Unicode-Strings als Standard. |
| 24 | +Die dritte Zeile ersetzt `open` durch das aus Python 3 bekannte. |
| 25 | + |
| 26 | +## Dinge, die anders sind |
| 27 | + |
| 28 | + * `input` heißt `raw_input` |
| 29 | + * viele Funktionen geben Listen oder Tupel zurück statt Iteratoren (z.B. `xrange` statt `range` verwenden) |
| 30 | + * viele Funktionen verwenden Bytestrings statt Unicodestrings |
| 31 | + * Klassen müssen explizit von `object` erben |
| 32 | + * `int`s, `list`s und `dict`s haben eine maximale Länge (evtl. statt `int` `long` verwenden) |
| 33 | + * einige Dinge in der Standardlibrary wurden verschoben (siehe z.B. [diese Tabelle](https://six.readthedocs.io/#module-six.moves)) |
| 34 | + * ... |
| 35 | + |
| 36 | + |
| 37 | +## neue Module aus der Standardlibrary, die sich nachinstallieren lassen |
| 38 | + |
| 39 | + * [ipaddress](https://pypi.org/project/ipaddress/) |
| 40 | + * [enum34](https://pypi.org/project/enum34/) |
| 41 | + * ... |
0 commit comments