Parametrisierung in Python
Einführendes Beispiel
Hinter dem Namen einer Funktion kann in der Definition ein eingeklammerter Bezeichner geschrieben werden.
Dieser Name wird Parameter genannt.
Eine Funktion kann auch mit einem Parameter definiert werden. Ein Parameter ist ein Bezeichner in den runden Klammern der Funktionsdefinition, der dann in der Suite der Funktion so verwendet werden kann, als hätte er einen Wert.
Diese Funktion kann dann mit einem Argument aufgerufen werden. Durch solch einen Aufruf wird dann eine Inkarnation (das heißt: eine Kopie) der Funktion angelegt, in welcher der Parameter in der Suite der Funktion für den Argumentwert steht.
- Protokoll
f = lambda x: print( x )
f( 2 )2
- Protokoll
def f( x ):
print( x )
f( 2 )2
Bei einem Aufruf einer Funktion mit einem Parameter wird eine Inkarnation der Funktion angelegt, in welcher der Parameter zunächst an den Wert des Arguments des Aufrufs gebunden ist, so als ob der Wert des Parameters durch eine Bindung an den Wert des Arguments gebunden wurden. Im Falle des obigen Beispiels wäre die Bindungsanweisung beispielsweise »x = 2«.
Besonders wichtig ist auch der Fall parametrisierter Funktionen mit einem Rückgabewert. Wir zeigen ein Beispiel.
- Protokoll
def f( x ):
return 10 * x
print( f( 2 ))20
Zeichnen einer Flagge
- Flagge ohne Parameter
from turtle import *
W = 99
D = 2*Wdef rect():
begin_fill()
forward( W ); right( 90 );
forward( D ); right( 90 );
forward( W ); right( 90 );
forward( D ); right( 90 );
end_fill()
forward( W )penup()
bgcolor( 0.7, 0.7, 0.7 )
left( 90 )
forward( W )
right( 90 )
backward( W*1.5 )colormode( 255 )
fillcolor( 0x00, 0x55, 0xA4 ); rect()
fillcolor( 0xFF, 0xFF, 0xFF ); rect()
fillcolor( 0xEF, 0x54, 0x31 ); rect()hideturtle()
- Flagge mit Parametern
from turtle import *
W = 99
D = 2*Wdef rect( r, g, b ):
fillcolor( r, g, b )
begin_fill()
forward( W ); right( 90 );
forward( D ); right( 90 );
forward( W ); right( 90 );
forward( D ); right( 90 );
end_fill()
forward( W )penup()
bgcolor( 0.7, 0.7, 0.7 )
left( 90 )
forward( W )
right( 90 )
backward( W*1.5 )colormode( 255 )
rect( r=0x00, g=0x55, b=0xA4 )
rect( r=0xFF, g=0xFF, b=0xFF )
rect( r=0xEF, g=0x54, b=0x31 )hideturtle()
Übungsfragen
? Übungsfrage 0 ⃖
Wie heißt die im folgenden definierte Funktion?
- Protokoll
def f( x ):
print( x )
? Übungsfrage 1 ⃖
Wie heißt der Parameter der im folgenden definierte Funktion?
- Protokoll
def f( x ):
print( x )
Übungsaufgaben
Für alle Funktionsdefinitionen in diesem Kapitel soll »def« verwendet werden und nicht »= lambda«.
/ Umbenennung einer Funktion (30 ″) ⃖
Kopieren Sie den folgenden Quelltext und ändern Sie in der Kopie dann den Namen der Funktion in »g«.
Bei dieser Aufgabe sollen möglichst wenig Zeichen des vorgegebenen Quelltextes geändert werden. Das Ergebnis soll weiterhin nur aus einer Funktionsdefinition mit einer print-Anweisung als Suite bestehen.
- Quelltext
def f( x ):
print( x )
/ Umbenennung eines Parameters (Refaktor) (1 ′) ⃖
Kopieren Sie den folgenden Quelltext und ändern Sie in der Kopie dann den Namen des Parameters in »a«.
Es soll sich um einen Refaktor handeln, das heißt, die Funktion soll weiterhin ihren Argumentwert ausgeben.
- Quelltext
def f( x ):
print( x )
/ Schreiben einer Funktionsdefinition mit einem Parameter (2 ′)
Schreiben Sie eine def-Definition einer Funktion »h«, die einen Parameter »p« hat und als Suite nur »pass« enthält.
/ Schreiben einer Funktionsdefinition mit einem Parameter (1 ′)
Schreiben Sie eine def-Definition einer Funktion »w«, die einen Parameter »n« hat und als Suite nur »print( n )« enthält.