def - Universität Paderborn

Werbung
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Einführung in Python
Stefan Dziwok
Universität Paderborn
1. Februar 2007
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Referenzen
„Python has been an important part of Google since the beginning,
and remains so as the system grows and evolves. Today dozens of
Google engineers use Python, and we’re looking for more people with
skills in this language.“
Peter Norvig, director of search quality at Google, Inc.
„Python is fast enough for our site and allows us to produce
maintainable features in record times, with a minimum of developers.“
Cuong Do, Software Architect, YouTube.com
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Basisdaten
Erscheinungsjahr:
Erfinder:
Aktuelle Version:
Paradigmen:
Typisierung:
Betriebssystem:
Website:
Lizenz:
Übersicht
Grundlagen
1990
Guido van Rossum
2.5 (19.09.2006)
objektorientiert
aspektorientiert
funktional
stark, dynamisch
(„Duck Typing“)
plattformunabhängig
www.python.org
Python License
(Open Source)
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Ziele von Python
• Python als einfache und übersichtliche Skriptsprache
• dennoch mächtiger Funktionsumfang
• kostenlos verfügbar und individuell anpassbar
• in andere Sprachen integrierbar
• für tägliche Aufgaben geeignet
• kurze Entwicklungszeiten und hohe Wartbarkeit
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Typisierung
Werte von Variablen bekommen dynamisch einen Typ zugewiesen.
Zahlen sind untereinander implizit umwandelbar. Typanpassung
zwischen Zahlen und Strings muss explizit sein.
Beispiel:
>>> a = 1
>>> b = ’2’
>>> print a + b
TypeError: unsupported operand
type(s) for +: ’int’ and ’str’
>>> print str(a) + b
12
>>> print a + int(b)
3
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Strukturierung durch Einrücken
• für Code-Blöcke werden keine Klammern (z.B. {...}) oder
Schlüsselwörter (z.B. do...od) genutzt
• werden durch gleichmäßiges
Einrücken (Leerzeichen) definiert
• Anweisungen sind durch Zeilenumbruch trennbar
• Vorteil: klare und gut lesbare Struktur,
weniger Strukturzeichen
• Nachteil: Umstand und Einschränkung
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Struktur-Vergleich
in C:
int fakultaet(int x) {
if(x<=1) return 1;
else {
return x*fakultaet(x-1);
}
}
in Python:
def fakultaet(x):
if (x <= 1): return 1
else:
return x * fakultaet(x - 1)
Module & Objektorientierung
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Verzweigungen
Die if-Anweisung ersetzt, durch den mittleren optionalen elif - Teil,
switch...case... - Anweisungen anderer Sprachen.
Beispiel:
if (x < 0):
y = 1
elif x == 0:
y = 2
elif x == 1:
y = 3
else:
y = 4
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Schleifen
Die for-Anweisung iteriert über Elemente einer Sequenz,
beispielsweise über eine Liste, die mit der range()-Funktion erstellt
werden kann.
Die while-Anweisung wiederholt einen Block so lange, wie ein
logischer Ausdruck wahr ist.
for und while im Vergleich
>>>
[1,
>>>
>>>
1 2
Übersicht
range(1,6)
2, 3, 4, 5]
for x in range(1,6):
print x,
3 4 5
Grundlagen
Kontrollstrukturen
Datenstrukturen
>>> x = 0
>>> while x < 10:
>>>
x = x + 1
>>>
print x,
1 2 3 4 5
Funktionale Programmierung
Module & Objektorientierung
Ausnahmebehandlung
Das try-Statement ist für das Testen von Fehlerbedingungen
gedacht.
Beispiel
>>> x = 0
>>> try:
...
print 1.0/x
... except ZeroDivisionError:
...
print ’Division durch Null.’
... else:
# falls try erfolgreich ist
...
print ’Keine Division durch Null.’
... finally: # wird immer ausgeführt
... print ’Eine Division fand statt.’
Division durch Null.
Eine Division fand statt.
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Funktionen
Mit def lassen sich Funktionen definieren.
Funktionsrümpfe dürfen nicht leer sein. (stattdessen: pass)
Beispiel
# keine Angabe eines Rückgabewertes nötig
>>> def returnSomething():
...
return ’something’
# Parameter können Default-Werte haben
>>> def fun(a, b=2):
...
print a, b
>>> fun(1)
# Funktionsaufruf
1 2
# direkte Bezug auf formale Parameter
>>> fun(a=1, b=3)
1 3
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Module & Objektorientierung
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Listen
Eine Liste kann Einträge von verschiedenen Typen haben. Man kann
sie verändern, teilen, konkatenieren und verschachteln.
Beispiel
>>> a = [’hallo’,123,13.37]
>>> a
# Ausgabe der Liste
[’hallo’,123,13.37]
>>> a[0]
# der 1. Wert
’hallo’
>>> a[1:2]
# Teilbereich x: 1 <= x < 2
123
>>> a[2] = 1337 # Listeneinträge sind änderbar
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Funktionen für Listen
Durch die Kombination von a.append() und a.pop(0) bzw. a.pop()
lässt sich eine Queue bzw. ein Stack simulieren.
Beispiel
>>> a = [1.5, 2, 2, 3.5]
>>> a.count(2)
# Häufigkeit von Wert 2
2
>>> a.append(4)
# füge 4 ans Ende an
>>> a.pop(0), a.pop() # lösche ersten/letzten Wert
[1.5, 4]
>>> a.insert(2, -1) # Wert -1 an Index 2 einfügen
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Dictionary
Ein Dictionary ist ein assoziatives Array von der Form <key,value>.
Der Typ der Keys kann verschieden sein.
Beispiel
>>> dict = {’anton’=123, 456=’bert’}
>>> dict[’carl’] = 789 # neuer Eintrag
>>> dict[’anton’]
# Abfrage
123
>>> del dict[’anton’] # Eintrag löschen
>>> dict
# Ausgabe
{456: ’bert’, ’carl’: 789}
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Mehr über Funktionen
Es gibt 2 spezielle Funktionsparameter, die eine Liste bzw. ein
Dictionary repräsentieren.
Gefüllt werden beide mit übergebenen Werten oder Tupeln, die den
vorhandenen Parameter nicht zugewiesen werden konnten.
Beispiel
# *args: eine Liste von Werten
# **kwargs: ein Dictionary mit <key,value>-Tupeln
>>> def fun(a, b=2, *args, **kwargs):
print a, b, args, kwargs
>>> fun(1, 3, 6, 7, x=8, y=9)
1 3 (6, 7) {’y’: 9, ’x’: 8}
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module & Objektorientierung
Schluss
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Funktionale Programmierung
Nachfolgend ein Beispiel für eine Funktion höherer Ordnung.
Beispiel:
>>> def add_and_print_maker(x):
...
def temp(y):
...
print "%d + %d = %d" % (x, y, x+y)
...
return temp
>>> add_and_print_maker(1)(2)
1 + 2 = 3
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Funktionen für die Funktionale Programmierung
Zwei eingebaute Funktionen für die Verarbeitung von Listen:
Beispiel:
# map(func, sequenz) ruft jeweils func(x) auf
# Ergebnisse werden in einer Liste gespeichert
>>> def quad(x): return x*x
>>> map(quad, range(1, 6))
[1, 4, 9, 16, 25]
# reduce(func, sequenz, init) ruft func(x,y) auf
# x ist das Ergebnis vom letzten return (Start:init)
>>> def add(x,y): return x+y
>>> reduce(add, range(1, 6), 0)
15 # = ((((0+1)+2)+3)+4)+5
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Module & Objektorientierung
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Module
In Python lassen sich externe Skripte und ihre Funktionen durch
import ... bzw. durch from ... import ... einbinden.
Beispiel
# Datei math1.py
def quad(x):
return x*x
def cube(x):
return x*x*x
# Modul-Import
>>> import math1
>>> math1.quad(2)
4
# Funktionen-Direktimport
>>> from math1 import quad,cube
>>> cube(2)
8
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Standardbibliotheken
• Philosophie: Batteries included
• unterstützt viele Standardformate und -Protokolle (insbesondere
Internet-Anwendungen)
• Plattformunabhängigkeit aber auch Plattformspezialisierungen
• gute Anbindung zu anderen Programmiersprachen (z.B. zur
GUI-Erstellung)
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Objektorientierung
Aus Klassen werden Objekte gebildet.
Das erste Argument einer Methode ist immer explizit die
Objekt-Instanz selbst. Sie wird meist self genannt. In Python ist
Mehrfachvererbung und das Überschreiben von Methoden möglich.
Beispiel:
>>> class Math:
...
def __init__(self,x): # Konstruktor
...
self.x = x
# self.x ist Objektvariable
...
def quad(self):
...
return self.x * self.x
# Instanziierung
>>> m = Math(5)
>>> m.quad()
25
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Gliederung
1
Übersicht
2
Grundlagen
3
Kontrollstrukturen
4
Datenstrukturen
5
Funktionale Programmierung
6
Module & Objektorientierung
7
Schluss
Module & Objektorientierung
Schluss
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Schluss
Eigene Erfahrungen
• Python als Standardskriptsprache bei dSPACE
• Skripte für verschiedenste Problemstellungen von
unterschiedlicher Größe
• Schwerpunkt ist die Automatisierung verschiedenster
Programme (Word, Excel, Datenbanken, dSPACE-Produkte)
• Ziele von Python (Lesbarkeit, Einfachheit, Wartbarkeit) werden
erfüllt
Übersicht
Grundlagen
Kontrollstrukturen
Datenstrukturen
Funktionale Programmierung
Module & Objektorientierung
Referenzen
http://python.org/
Python Software Foundation.
http://de.wikipedia.org/wiki/Python_
(Programmiersprache)
Wikimedia Foundation Inc.
Schluss
Herunterladen