Python Idioms
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Von WiederkehrendeBedürfnisse. Die Seite für kleine, nützliche Python-Redewendungen oder "snippets". Dinge, die der erfahrende Programmierer sucht, wenn er sich mit einer neuen Sprache anfreunden möchte. Um Spenden wird
gebeten.
Vertauschen von zwei Werten | |
In Python gibt es das automatische Entpacken und Verpacken von Tupeln.
Enthaltensein in einer Menge | |
In Python gibt es den Operator in, der prüft ob ein Objekt in einer
Sequenz (Tupel oder Liste) enthalten ist. In Python 2.2 wird dies auf
Mappings (Dictionaries, Hashes) ausgedehnt, so dass auch diese als effiziente Implementierung für den abstrakten Typ Menge benutzt werden können.
| if word in ('add', 'sub', 'mul', 'div'):
operator(word, operand)
elif word in ('push', 'pop'):
stack_operation(word) |
|
|
Der Aufrufname des momentanen Programmes | |
Der Modul sys exportiert unter anderem eine Liste argv, die
nebem dem Aufrufnamen auch die Kommandozeilen Parameter enthält:
| import sys
print "Ich wurde als '%s' aufgerufen" % sys.argv[0]
print "Meine Parameter sind:", argv[1:] |
|
|
Der Modul os exportiert neben vielen anderen nützlichen Dingen
auch eine HashTabelle mit Umgebungsvariablen.
Dieses Beispiel zeigt gleichzeitig, wie man so eine HashTabelle sortiert
ausgibt:
| import os
env_keys = os.environ.keys()
env_keys.sort()
for env_var in env_keys:
print "%s = %s" % (env_var, os.environ[env_var]) |
|
|
Programme, aus denen man importieren kann | |
Wird ein Modul nicht importiert, sondern direkt aufgerufen, dann bekommt
die Builtin-Variable __name__ den Namen __main__ statt des
Namens des Moduls. Das wird benutzt, um z.B. unit-Tests anzustossen oder
um einzelne hilfreiche Klassen aus Programmen direkt wieder benutzen zu
können:
| import ....
def ....
class ....
if __name__ == "__main__":
# This is module is called directly as a program
... call some functions ... |
|
|
Kommandozeilen-Optionen, Usage und Doc-Strings | |
Hier ein etwas ausführlicheres Beispiel, das als Rumpf für einfache
Skripte dienen kann:
| #!/usr/bin/env python
"""Programm Blah Blah
Benutzung: blah optionen
Blah Blah
Version %(__version__)s
"""
import sys, os, getopt
__version__ = "0.0"
def usage(code, msg=''):
print __doc__ % globals()
if msg:
print msg
raise SystemExit, code
class Options:
"Ein einfacher container für alle optionen und Defaults"
all = 0
foo = "bar"
if __name__ == "__main__":
try:
opts, args = getopt.getopt(sys.argv[1:], "af:", ['all', 'foo='])
except getopt.error, msg:
usage(1, msg)
options = Options()
for option, argument in opts:
option = option.lower()
if option in ('-a', '--all'):
options.all = 1
elif option in ('-f', '--foo'):
options.foo = argument
# Hier Abarbeiten der restlichen Parameter:
for dateiname in args:
# Bearbeite Datei dateiname
.... |
|
|
Weitere Links: WardsWiki:PythonIdioms
KategorieResourcen KategoriePython
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 6. März 2010 7:24 (diff))