5 8. Python - Universität Paderborn

Werbung
5
Vorlesung und Übung
Dr. Peter Pfahler
Institut für Informatik
Universität Paderborn
8
© Peter Pfahler, Michael Thies, Universität Paderborn
8. Python
Entwickelt seit 1990 von Guido van Rossum am
Centrum voor Wiskunde en Informatica in Amsterdam.
Entwicklungsziele:
Einfach und übersichtlich => recht reduzierte Syntax
Multi-paradigm => Unterstützung von
Prozeduraler / strukturierter
Objektorientierter
Funktionaler
Aspekt-orientierter Programmierung
Open Source
Guter Einstieg: http://docs.python.org/tutorial/
© Peter Pfahler, Michael Thies, Universität Paderborn
8-2
Spracheigenschaften von Python
Blockklammerung durch Einrückung
Dynamische Typisierung
Keine implizite Typanpassung zwischen verschiedenartigen Typen (String/int)
Objektorientierung mit Mehrfacherbung
Modularisierung
Ausnahmebehandlung
Generatoren und Listen-Manipulation
© Peter Pfahler, Michael Thies, Universität Paderborn
8-3
Python in Beispielen
Blockklammerung durch Einrückung
REFRAIN = '''
%d bottles of beer on the wall,
%d bottles of beer,
take one down, pass it around,
%d bottles of beer on the wall!
'''
bottles_of_beer = 99
while bottles_of_beer > 1:
print REFRAIN % (bottles_of_beer, bottles_of_beer,
bottles_of_beer ­ 1)
bottles_of_beer ­= 1
© Peter Pfahler, Michael Thies, Universität Paderborn
8-4
Python in Beispielen
Definition von Funktionen
def fib(n): # write Fibonacci series up to n
"""Print a Fibonacci series up to n."""
a, b = 0, 1
while b < n:
print b
a, b = b, a+b
# Now call the function we just defined:
fib(2000)
Schlüssel-Parameter (keyword arguments)
def setme(val, state='start'):
Print 'state ', state, ' ', val
# call the function:
setme(12)
setme(16,'end')
setme(state='s2', val='fifty')
© Peter Pfahler, Michael Thies, Universität Paderborn
8-5
Python in Beispielen
Listen und Dictionaries
obst = ['apfel', 'birne', 'banane', 'kirsche']
obst[1]=100
obst[1] = ['pflaume', 'aprikose']
obst[­2] = 'erdbeere'
obst[1:­1] = []
print obst
tel = {'heinz': 4098, 'anne': 4139}
tel['guido'] = 4127
print tel['heinz']
del tel['anne']
print tel.keys()
print 'guido' in tel
© Peter Pfahler, Michael Thies, Universität Paderborn
8-6
Python in Beispielen
Generator-Ausdrücke (list comprehension)
vec = [2, 4, 6]
print [3*x for x in vec]
print [3*x for x in vec if x > 3]
prices = {'apple': 0.40, 'banana': 0.50}
my_purchase = {
'apple': 1,
'banana': 6}
grocery_bill = sum(prices[fruit] * my_purchase[fruit]
for fruit in my_purchase)
print 'I owe the grocer $%.2f' % grocery_bill
© Peter Pfahler, Michael Thies, Universität Paderborn
8-7
Python in Beispielen
Funktionale Programmierung mit Listen (filter, reduce, map)
def f(x): return x % 2 != 0 and x % 3 != 0
print filter(f, range(2, 25))
def add(x,y): return x+y
print reduce(add, range(1, 11))
# mit Startwert für den akkumulierenden Parameter
seq=[]
print reduce(add, seq, 0)
def cube(x): return x*x*x
print map(cube, range(1, 6))
© Peter Pfahler, Michael Thies, Universität Paderborn
8-8
Python in Beispielen
Klassen und Objekte
class BankAccount(object):
def __init__(self, initial_balance=0):
self.balance = initial_balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
self.balance ­= amount
def overdrawn(self):
return self.balance < 0
my_account = BankAccount(15)
my_account.withdraw(5)
print my_account.balance
© Peter Pfahler, Michael Thies, Universität Paderborn
8-9
Python und CGI
#!/usr/bin/python
import cgi
print "Content­type: text/html"
print
print """
<html>
<head><title>Sample CGI Script</title></head>
<body>
<h3> Sample CGI Script </h3>
"""
form = cgi.FieldStorage()
message = form.getvalue("message", "(no message)")
print """
<p>Previous message: %s</p>
<form method="post" action="try.py">
<p>message: <input type="text" name="message"/></p>
</form>
</body>
</html>
""" % message
© Peter Pfahler, Michael Thies, Universität Paderborn
8-10
Herunterladen