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.
   a, b = b, a

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:]

Umgebungsvariablen

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))
Suchbegriff: gesucht wird
im Titel
im Text