[Python-de] Konventionen

Sven Broeckling sven at broeckling.de
Fr Jul 30 14:55:43 UTC 2010


Hallo Sebastian,

Am Fri, 30 Jul 2010 13:49:09 +0200
schrieb Sebastian Bechtel <me at sebastian-bechtel.info>:

> Zum einen bin ich bei der Benennung der Module sehr verwundert. Ich
> hätte eigentlich erwartet, dass Module entweder komplett klein
> geschrieben werden sollten oder als CamelCase. Nun treffen mich aber
> selbst in der Standard Bibliothek beide Typen an und ich habe jetzt
> keinen Schimmer, nach welcher Konvention ich meine Module benennen
> soll. Gibt es diesbezüglich überhaupt eine Konvention?
Gibt es, wie bei vielem in Python in das in einem PEP (Python
Enhancement Proposal) beschrieben, nämlich in PEP8
http://www.python.org/dev/peps/pep-0008/

Und da heisst es unter Package and Module Names:
Modules should have short, all-lowercase names.  Underscores can be used
in the module name if it improves readability.  Python packages
should also have short, all-lowercase names, although the use of
underscores is discouraged.

Nach welchen Regeln allerdings einige Module der Standardbibliothek
nicht komplett klein geschrieben sind kann ich dir auch nicht sagen.

> In Python habe ich den Einsatz davon bereits gesehen. Es wird zwar
> nach meinem ersten Eindruck sehr global importiert (oft nur das Basis
> Packet) aber teilweise werden auch wirklich einzelne Funktionen
> importiert. Jetzt würde mich natürlich interessieren, ob da ein
> System steckt. So nach dem Motto Funktionen wie time.time() (statisch
> + wahrscheinlich relativ einzigartig) importieren wir jetzt direkt
> während wir urllib.URLOpener nicht direkt importieren, sondern nur
> urllib, weil es noch andere URLOpener geben könnte, die man verwenden
> könnte irgendwo.
Ich mache das eigentlich immer je nach Anwendungsfall. Wenn ich
Funktionen aus os brauche importiere ich via "import os" das Modul, so
kann man im Code gut sehen woher ein Symbol stammt. Prinzipiell ist
allerdings alles möglich, nur verhindern sollte man "Stern-Imports",
also z.B. "from os import *". So kann man im code gar nicht mehr sehen
wo etwas herkommt. Pylint (http://pypi.python.org/pypi/pylint)
bemängelt auch derartige Imports. ("W:  1: Wildcard import os")


Im PEP Index (http://www.python.org/dev/peps/) findet man auch einiges
zu Imports im Besonderen. 

Viele Grüße
  Sven



Mehr Informationen über die Mailingliste python-de