Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 27 Insiderwissen
  Pfeil 27.1 Dateien direkt mit einem bestimmten Encoding lesen
  Pfeil 27.2 URLs im Standardbrowser öffnen – webbrowser
  Pfeil 27.3 Funktionsschnittstellen vereinfachen – functools
  Pfeil 27.4 Versteckte Passworteingaben – getpass
  Pfeil 27.5 Kommandozeilen-Interpreter – cmd


Galileo Computing - Zum Seitenanfang

27.3 Funktionsschnittstellen vereinfachen – functools  topZur vorigen Überschrift

Im Modul functools ist die Funktion partial enthalten, mit der sich Funktionsschnittstellen vereinfachen lassen. Betrachten Sie dazu die folgende Funktion:

def f(a, b, c, d): 
    print "%s %s %s %s" % (a,b,c,d)

Die Funktion f erwartet viele Parameter, vier an der Zahl. Stellen Sie sich nun vor, wir müssten die Funktion f sehr häufig im Programm aufrufen und würden dabei für die Parameter b, c und d immer die gleichen Werte übergeben. Es drängt sich die Frage auf, ob sich solch ein Funktionsaufruf nicht so vereinfachen lässt, dass nur der eigentlich interessante Parameter a übergeben werden muss. Und genau hier setzt die Funktion partial des Modus functools ein.

functools.partial(func[, *args[, **kwargs]])

Die Funktion partial bekommt ein Funktionsobjekt übergeben, dessen Schnittstelle vereinfacht werden soll. Zusätzlich werden die feststehenden Positions- und Schlüsselwortparameter der Funktion func übergeben.

Die Funktion partial gibt jetzt ein neues Funktionsobjekt zurück, dessen Schnittstelle der von func entspricht, jedoch um die in args (arguments) und kwargs (keyword arguments) angegebenen Parameter erleichtert wurde. Bei einem Aufruf des zurückgegebenen Funktionsobjekts werden diese feststehenden Parameter wieder in die Parameterliste geschrieben.

Dies soll durch das folgende Beispiel anhand der oben definierten Funktion f demonstriert werden:

>>> def f(a, b, c, d): 
...     print "%s %s %s %s" % (a,b,c,d) 
... 
>>> import functools 
>>> f_neu = functools.partial(f, b="du", c="schoene", d="Welt") 
>>> f_neu("Hallo") 
Hallo du schoene Welt 
>>> f_neu("Tschuess") 
Tschuess du schoene Welt

Zunächst wird die Funktion f definiert, die vier Parameter akzeptiert und diese hintereinander auf dem Bildschirm ausgibt. Da die letzten drei Parameter dieser Schnittstelle in unserem Programm immer gleich sind, möchten wir diese nicht immer wiederholen und vereinfachen die Schnittstelle mittels partial.

Dazu wird die Funktion partial aufgerufen und das Funktionsobjekt von f als erster Parameter übergeben. Danach folgen die drei feststehenden Werte für die Parameter b, c und d in Form von Schlüsselwortparametern. Die Funktion partial gibt ein Funktionsobjekt zurück, das der Funktion f mit vereinfachter Schnittstelle entspricht. Dieses Funktionsobjekt kann, wie im Beispiel zu sehen, mit einem einzigen Parameter aufgerufen werden, während dieser Parameter daraufhin offensichtlich zusammen mit seinen drei vorgegebenen Parametern beim Funktionsaufruf von f ankommt.

Abgesehen von Schlüsselwortparametern können der Funktion partial auch Positionsparameter übergeben werden, die dann ebenfalls als solche an die zu vereinfachende Funktion weitergegeben werden. Dabei ist zu beachten, dass die feststehenden Parameter dann am Anfang der Funktionsschnittstelle stehen müssen. Dazu folgendes Beispiel:

>>> def f(a, b, c, d): 
...     print "%s %s %s %s" % (a,b,c,d) 
... 
>>> f_neu = functools.partial(f, "Hallo", "du", "schoene") 
>>> f_neu("Welt") 
Hallo du schoene Welt 
>>> f_neu("Frau") 
Hallo du schoene Frau

Die ersten drei Parameter der Funktion f sind immer gleich und sollen mithilfe der Funktion partial als Positionsparameter festgelegt werden. Das resultierende Funktionsobjekt f_neu kann mit einem Parameter aufgerufen werden, der beim daraus resultierenden Funktionsaufruf von f neben den drei festen Parametern als vierter übergeben wird.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de