Funktionen in Python

Ähnliche Dokumente
Informatik I. 4. Funktionen: Aufrufe und Definitionen. 25. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I.

Programmierung in Python

Funktionales Programmieren in Python

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmierkurs Python I

Reguläre Ausdrücke in Python

Programmieren in Python

Erwin Grüner

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Listenverarbeitung in Python

Speicher und Adressraum

Java Kurs für Anfänger Einheit 5 Methoden

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

Kapitel 2 Ihr erstes Python-Programm

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl


Java Einführung Methoden. Kapitel 6

2. Programmierung in C

6 Speicherorganisation

Überladen von Operatoren

Prof. W. Henrich Seite 1

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Software Engineering Klassendiagramme Einführung

Informationsverarbeitung im Bauwesen

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Grundlagen der Programmierung in C Funktionen

Python so macht Programmieren Spass

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Funktionen in PHP 1/7

Funktionen und Parameter

Javakurs 2013 Objektorientierung

pyaxl2 Sebastian Kratzert Was ist AXL? Datenstrukturen Aufbau von pyaxl Die CCM-Objekte pyaxl2 Beispiele Ende Sebastian Kratzert 5.

Beispiel 19. December 4, 2009

C.3 Funktionen und Prozeduren

10 Objektorientierte Programmierung, Teil 1

Deklarationen in C. Prof. Dr. Margarita Esponda

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Objektorientierte Programmierung

Präzedenz von Operatoren

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Datentypen in Python

Kapitel MK:IV. IV. Modellieren mit Constraints

Prozedurale Datenbank- Anwendungsprogrammierung

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln

Java I Vorlesung 6 Referenz-Datentypen

Gewöhnliche Differentialgleichungen (ODEs) I

Algorithmen und Programmierung II

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Modul 122 VBA Scribt.docx

3. Anweisungen und Kontrollstrukturen

Michael Weigend. Python GE-PACKT

Programmieren in C / C++ Grundlagen C 4

Die Programmiersprache C Eine Einführung

Theorie zu Übung 8 Implementierung in Java

Probeklausur: Programmierung WS04/05

Programmieren in C++ Überladen von Methoden und Operatoren

Vorkurs C++ Programmierung

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Übersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen

Python CGI-Skripte erstellen

5. Tutorium zu Programmieren

5. Unterprogrammtechnik/Module

Annehmende Schleife do while

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Einführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann

Großübung zu Einführung in die Programmierung

Einführung in die C-Programmierung

Objektorientiertes Programmieren für Ingenieure

Mails in Python senden

Einführung in Python (1)

Inhalt. 4.7 Funktionen


Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Eclipse mit PyDev. Objektorientierung. Beispielaufgaben

Funktionen in Matlab. Lehrstuhl für Angewandte Mathematik Sommersemester und 29. Mai 2008

Praktische Anwendung von Metaklassen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Grundlagen von Python

PSTricks. pst-gannt. Gannt charts; v.0.2. May 13, Herbert Voß

Die Algorithmenbeschreibungssprache Jana

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Transkript:

Funktionen in Python Prof. Dr. Rüdiger Weis Beuth Hochschule für Technik Berlin 1 / 31

1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente 2 / 31

def Anweisung def def funktionsname ([ < 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

Beispiel: TuNix >>> def TuNix ( ) : pass... >>> TuNix <f u n c t i o n TuNix at 0 xb7df7e64> >>> p r i n t TuNix ( ) None 4 / 31

Argumentübergabe Argumente werden an lokale Variablen der Funktion übergeben. Argumentübergabe Unveränderliche Objekte call by value call by reference am besten mit Tupel als Funktionsrückgabe. 5 / 31

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 : ), x p r i n t ( Parameter y : ), y x = x 3 y = y 2 p r i n t ( Aendere Parameter x : ), x p r i n t ( Aendere Parameter y : ), y 6 / 31

Beispiel: call by value >>> x = 1 >>> y = 2 >>> f 1 ( x, y ) Parameter x : 1 Parameter y : 2 Aendere Parameter x : 3 Aendere Parameter y : 4 >>> x 1 >>> y 2 7 / 31

Beispiel: Veränderliche 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 : ), x p r i n t ( Parameter y : ), y x [ 0 ] = Hoppla y. append (42) p r i n t ( Aendere Parameter x : ), x p r i n t ( Aendere Parameter y : ), y 8 / 31

Beispiel: Veränderliche 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

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 names b = b + 1 # a s s i g n e d to new o b j e c t s r e t u r n a, b # r e t u r n new v a l u e s x, y = old v a l u e, 99 x, 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

Gültigkeitsbereich Gültigkeitsbereich Funktionen definieren einen eigenen Gültigkeitsbereich. Lokale Variablen 11 / 31

Beispiel: Lokale Variablen 1 >>> def f ( x ) :... y = 2... return ( x + y )... >>> f ( 1 ) 3 >>> y Traceback ( 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

Beispiel: Lokale Variablen 2 >>> y = 42 >>> def f ( x ) :... y = 2... return ( x + y )... >>> f ( 1 ) 3 >>> y 42 13 / 31

global Das Schlüsselwort global erlaubt den Zugriff auf globale Variablen. Sparsam verwenden. 14 / 31

LGB-Regel LGB-Regel 1 Local 2 Global 3 Built-In 15 / 31

Beispiel: Fibonacci Zahlen Rekursive Folge f 0 = 0 f 1 = 1 f n = f n 1 + f n 2, n 2 http://de.wikipedia.org/wiki/fibonacci-zahlen 16 / 31

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

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, 1 while True : y i e l d b a, b = b, a + b http://www.python.org/dev/peps/pep-0255/ 18 / 31

Default Argumente Default Parameter def funktionsname ([ < arg >], [< arg>=<vorgabewert >): <anweisungen> Vorgabe Parameter müssen hinter den Stellungsparametern stehen. Werden beim Aufruf ein Parameter weggelassen, wird der Vorgabewert verwendet. 19 / 31

Beispiel >>> def f ( antwort =42): p r i n t antwort... >>> f ( ) 42 >>> f ( Kein Plan! ) Kein Plan! 20 / 31

Gültigkeit Default Parameter (1) Gültigkeit 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

Gültigkeit Default Parameter (2) Gültigkeit Default Parameter (2) Default-Werte werden beim ersten Funktionsaufruf ausgewertet. Vorsicht bei veränderlichen Datentypen. 22 / 31

Beispiel: Gültigkeit 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 ] ) # E r g i b t : #[ 1, Spam ] #[ 1, Spam, Spam ] 23 / 31

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 ] ) # E r g i b t : #[ 1, Spam ] #[ 1, Spam ] 24 / 31

Aufruf mit Schlüsselwort Aufruf mit Schlüsselwort f([<arg>][,..., ][<arg>=<wert>]) Werte können beim Aufruf explizit einem Parameter-Namen zugewiesen werden. Alle Werte ohne Default-Wert müssen als Schlüsselwort-Parameter oder Stellungs-Parameter übergeben werden. 25 / 31

Variable Argumente Variable Argumente *<name> sammelt Position-Parameter in Tupel. **<name> sammelt Schlüsselwort-Parameter in Dictonary. Verwendung am Ende der Parameter-Liste. Reihenfolge: * ** 26 / 31

Beispiel: Positionsparameter >>> def f ( parameter ) : p r i n t parameter... >>> 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

Beispiel: Schlüsselworte >>> 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 with 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 with 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

Beispiel # F a l s c h 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 1 def 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

Beispiel # F a l s c h 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 arg a f t e r keyword arg # # 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 (11, 2, a=1) (11, 2) { a : 1} 30 / 31

c opyleft c opyleft Erstellt mit Freier Software c Rüdiger Weis, Berlin 2005 2011 unter der GNU Free Documentation License. 31 / 31