funktionen in python - beuth hochschule für technik...

31
def Anweisung Argument¨ ubergabe Lokale Variablen Default Argumente Aufruf mit Schl¨ usselwort Variable Argumente Funktionen in Python Prof. Dr. R¨ udiger Weis Beuth Hochschule f¨ ur Technik Berlin 1 / 31

Upload: ngoxuyen

Post on 06-Mar-2018

264 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Funktionen in Python

Prof. Dr. Rudiger Weis

Beuth Hochschule fur Technik Berlin

1 / 31

Page 2: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

1 def Anweisung

2 Argumentubergabe

3 Lokale Variablen

4 Default Argumente

5 Aufruf mit Schlusselwort

6 Variable Argumente

2 / 31

Page 3: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

def Anweisung

def

def f u n k t i o n s n a m e ([< arg > ] ) :[ ’ ’ D o k u m e n t a t i o n s s t r i n g ’ ’ ]

<anweisungen>[ return <ausdruck >]

def erstellt ein Funktionsobjekt mit 0 oder mehr Parametern.

Dokumentationsstring ist optional aber empfehlenswert.

return liefert Ausdruck. None wenn nicht vorhanden.

3 / 31

Page 4: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: TuNix

>>> def TuNix ( ) : pass. . .>>> TuNix< f u n c t i o n TuNix a t 0 xb7df7e64>>>> p r i n t TuNix ( )None

4 / 31

Page 5: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Argumentubergabe

Argumente werden an lokale Variablen der Funktion ubergeben.

Argumentubergabe

Unveranderliche Objekte ≈ call by value

call by reference am besten mit Tupel als Funktionsruckgabe.

5 / 31

Page 6: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: ’call by value’

def f 1 ( x , y ) :” c a l l b y v a l u e ”

p r i n t ( ’ Parameter x : ’ ) , xp r i n t ( ’ Parameter y : ’ ) , yx = x ∗ 3y = y ∗ 2p r i n t ( ’ Aendere Parameter x : ’ ) , xp r i n t ( ’ Aendere Parameter y : ’ ) , y

6 / 31

Page 7: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: ’call by value’

>>> x = 1>>> y = 2>>> f 1 ( x , y )Parameter x : 1Parameter y : 2Aendere Parameter x : 3Aendere Parameter y : 4>>> x1>>> y2

7 / 31

Page 8: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Veranderliche Datentypen

def f 2 ( x , y ) :” V e r a e n d e r l i c h e Datentypen ”

p r i n t ( ’ Parameter x : ’ ) , xp r i n t ( ’ Parameter y : ’ ) , yx [ 0 ] = ’ Hoppla ’y . append ( 4 2 )p r i n t ( ’ Aendere Parameter x : ’ ) , xp r i n t ( ’ Aendere Parameter y : ’ ) , y

8 / 31

Page 9: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Veranderliche Datentypen (II)

>>> x = [ 1 , 2 , 3 ]>>> y = [ 1 1 , 12 , 1 3 ]>>> f 2 ( x , y )Parameter x : [ 1 , 2 , 3 ]Parameter y : [ 1 1 , 12 , 1 3 ]Aendere Parameter x : [ ’ Hoppla ’ , 2 , 3 ]Aendere Parameter y : [ 1 1 , 12 , 13 , 4 2 ]>>> x[ ’ Hoppla ’ , 2 , 3 ]>>> y[ 1 1 , 12 , 13 , 4 2 ]

9 / 31

Page 10: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Empfehlung: ’call by reference’

http://www.python.org/doc/faq/programming/

How do I write a function with output parameters (call by reference)?

By returning a tuple of the results:

def func2 ( a , b ) :a = ’new−v a l u e ’ # a and b a r e l o c a l namesb = b + 1 # as s i g n e d to new o b j e c t sre tu rn a , b # re t u r n new v a l u e s

x , y = ’ o ld−v a l u e ’ , 99x , y = func2 ( x , y )p r i n t x , y # output : new−v a l u e 100

This is almost always the clearest solution.

10 / 31

Page 11: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Gultigkeitsbereich

Gultigkeitsbereich

Funktionen definieren einen eigenen Gultigkeitsbereich.

Lokale Variablen

11 / 31

Page 12: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Lokale Variablen 1

>>> def f ( x ) :. . . y = 2. . . return ( x + y ). . .>>> f ( 1 )3>>> yTraceback ( most r e c e n t c a l l l a s t ) :

F i l e ”<s t d i n >” , l i n e 1 , i n ?NameError : name ’ y ’ i s not d e f i n e d

12 / 31

Page 13: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Lokale Variablen 2

>>> y = 42>>> def f ( x ) :. . . y = 2. . . return ( x + y ). . .>>> f ( 1 )3>>> y42

13 / 31

Page 14: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

global

Das Schlusselwort global erlaubt den Zugriff auf globaleVariablen.

Sparsam verwenden.

14 / 31

Page 15: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

LGB-Regel

LGB-Regel

1 Local

2 Global

3 Built-In

15 / 31

Page 16: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Fibonacci Zahlen

Rekursive Folge

f0 = 0

f1 = 1

fn = fn−1 + fn−2, ∀n ≥ 2

http://de.wikipedia.org/wiki/Fibonacci-Zahlen

16 / 31

Page 17: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Exkurs: Fibonacci rekursiv

def f i b o n a c c i ( n ) :” F i b o n a c c i r e k u r s i v ”

i f n >= 2 :return ( f i b o n a c c i ( n − 1) + f i b o n a c c i ( n − 2 ) )

e l i f n == 1 :return 1

e l i f n == 0 :return 0

17 / 31

Page 18: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Exkurs: Fibonacci mittels Generator

def f i b ( ) :” F i b o n a c c i m i t t e l s G e n e r a t o r ”

a , b = 0 , 1whi le True :

y i e l d ba , b = b , a + b

http://www.python.org/dev/peps/pep-0255/

18 / 31

Page 19: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Default Argumente

Default Parameter

def f u n k t i o n s n a m e ([< arg > ] , [<arg>=<vorgabewert >):

<anweisungen>

Vorgabe Parameter mussen hinter den Stellungsparameternstehen.

Werden beim Aufruf ein Parameter weggelassen,wird der Vorgabewert verwendet.

19 / 31

Page 20: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel

>>> def f ( an two rt =42): p r i n t an tw or t. . .>>> f ( )42>>> f ( ’ Kein Plan ! ’ )Kein Plan !

20 / 31

Page 21: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Gultigkeit Default Parameter (1)

Gultigkeit Default Parameter

Parameter sind bei der Definition der Default-Werte nicht nutzbar.

>>> def mische(sequenz, start=0, ende=len(sequenz)): pass

...

Traceback (most recent call last):

File "<stdin>", line 1, in ?

NameError: name ’sequenz’ is not defined

21 / 31

Page 22: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Gultigkeit Default Parameter (2)

Gultigkeit Default Parameter (2)

Default-Werte werden beim ersten Funktionsaufrufausgewertet.

Vorsicht bei veranderlichen Datentypen.

22 / 31

Page 23: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Gultigkeit Default Parameter

def v e r k e t t e ( a , b = [ ] ) :

b . append ( ”Spam” )return a + b

p r i n t v e r k e t t e ( [ 1 ] )p r i n t v e r k e t t e ( [ 1 ] )

# Erg i b t :#[ 1 , ’Spam ’ ]#[ 1 , ’Spam ’ , ’Spam ’ ]

23 / 31

Page 24: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Workaround: Defaultparameter None

Workaround: None und anschliessende Zuweisung.

def v e r k e t t e ( a , b=None ) :

i f b == None :b = [ ]

b . append ( ”Spam” )return a + b

p r i n t v e r k e t t e ( [ 1 ] )p r i n t v e r k e t t e ( [ 1 ] )

# Erg i b t :#[ 1 , ’Spam ’ ]#[ 1 , ’Spam ’ ]

24 / 31

Page 25: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Aufruf mit Schlusselwort

Aufruf mit Schlusselwort

f([<arg>][, ..., ][<arg>=<wert>])

Werte konnen beim Aufruf explizit einem Parameter-Namenzugewiesen werden.

Alle Werte ohne Default-Wert mussen alsSchlusselwort-Parameter oder Stellungs-Parameter ubergebenwerden.

25 / 31

Page 26: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Variable Argumente

Variable Argumente

*<name> sammelt Position-Parameter in Tupel.

**<name> sammelt Schlusselwort-Parameter in Dictonary.

Verwendung am Ende der Parameter-Liste.

Reihenfolge:

***

26 / 31

Page 27: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Positionsparameter

>>> def f (∗ pa ra me te r ) : p r i n t pa ra me te r. . .>>> f ( 1 , 2 , 3)( 1 , 2 , 3)>>> f ( ’ B r i a n ’ , ’ J u d i t h ’ )( ’ B r i a n ’ , ’ J u d i t h ’ )>>> f ( ( ’ B r i a n ’ , ’ J u d i t h ’ ) )( ( ’ B r i a n ’ , ’ J u d i t h ’ ) , )

27 / 31

Page 28: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel: Schlusselworte

>>> def f (∗∗ s c h l u e s s e l w o r t e ) : p r i n t s c h l u e s s e l w o r t e. . .>>> f ( f r u e h s t u e c k= ’ spam ’ ){ ’ f r u e h s t u e c k ’ : ’ spam ’ }>>> f ( f r u e h s t u e c k= ’ spam ’ , m i t t a g e s s e n= ’ spam w i t h eggs ’ ){ ’ f r u e h s t u e c k ’ : ’ spam ’ , ’ m i t t a g e s s e n ’ : ’ spam w i t h eggs ’ }>>> f ( x =23, y =42, e s s e n =( ’ spam ’ , 6 9 ) ){ ’ y ’ : 42 , ’ x ’ : 23 , ’ e s s e n ’ : ( ’ spam ’ , 69)}

28 / 31

Page 29: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel

# Fa l s ch e R e i h e n f o l g e :#>>> def f (∗∗worte , ∗ para ) : p r i n t para , worte

F i l e ”<s t d i n >” , l i n e 1def f (∗∗worte , ∗ para ) : p r i n t para , worte

ˆS y n t a x E r r o r : i n v a l i d s y n t a x## R i c h t i g e R e i h e n f o l g e : P o s i t i o n vorne#>>> def f (∗ para , ∗∗worte ) : p r i n t para , worte. . .

29 / 31

Page 30: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

Beispiel

# Fa l s ch e R e i h e n f o l g e#>>> f ( a=1, 11 , 2)S y n t a x E r r o r : non−keyword ar g a f t e r keyword a rg## R i c h t i g e R e i h e n f o l g e : P o s i t i o n vorne#>>> f ( 1 1 , 2 , a=1)( 1 1 , 2) { ’ a ’ : 1}

30 / 31

Page 31: Funktionen in Python - Beuth Hochschule für Technik Berlinpublic.beuth-hochschule.de/.../WeisPythonFunktionen.pdf · def AnweisungArgumentub ergabeLokale VariablenDefault ArgumenteAufruf

def Anweisung Argumentubergabe Lokale Variablen Default Argumente Aufruf mit Schlusselwort Variable Argumente

c©opyleft

c©opyleft

Erstellt mit Freier Software

c© Rudiger Weis, Berlin 2005 – 2011

unter der GNU Free Documentation License.

31 / 31