einführung in python · 2017. 5. 26. · ubersicht¨ motivation metadaten python syntax...
TRANSCRIPT
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Einführung in Python
Jürgen Geuter([email protected])
April 13, 2007
http://the-gay-bar.com
Jürgen Geuter ([email protected]) — Einführung in Python 1/20
http://the-gay-bar.com
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
1 Motivation
2 Metadaten
3 Python SyntaxBasicsDatentypenModulkonzeptObjektorientierungExceptions
4 Programming PythonThe Zen of PythonAdvanced Python
5 Links/Fazit
Jürgen Geuter ([email protected]) — Einführung in Python 2/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Motivation
Python’s Verbreitung wächst ständig
im Desktop (Gnome Desktop, gdesklets)
auf Handys (http://maemo.org)
als Basis von Webanwendungen (www.modpython.org/,http://djangoproject.org)
als Perl-Ersatz in der Shell
Was ist dran?
Jürgen Geuter ([email protected]) — Einführung in Python 3/20
http://maemo.orgwww.modpython.org/http://djangoproject.org
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Metadaten
1990 von Guido van Rossum (damals an der UniversitätAmsterdam, heute bei Google) entwickelt
heute im Besitz der Python Software Foundation
lizensiert unter der Python Software Foundation License(BSD Style)
aktuelle Version ist 2.5
benannt nach Monty Python’s Flying Circus
Jürgen Geuter ([email protected]) — Einführung in Python 4/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Grundlegendes
Lesbarer Code ist grundlegendes Ziel
Bruch mit dem C-Style-Paradigma
Unterstützung diverser Programmierparadigmen(objektorientiert, prozedural, funktional)
einfach zu lernen
“Comes with batteries included”
Jürgen Geuter ([email protected]) — Einführung in Python 5/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Typisierung
statisch dynamisch
stark C, C++, C#
schwach ? Perl,
Jürgen Geuter ([email protected]) — Einführung in Python 6/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Syntax-Basics
Blockdefinition per Einrückung, keine “{” und “}”notwendig
Variablen-/Funktionsnamen sind case-sensitive
Variablen beginnen mit einem Buchstaben, können aberZahlen, “-” und “ ” enthalten
Zeilenenden müssen nicht “markiert” werden (kein “;”)
Einrückungen können mittels Tab oder Leerzeichengemacht werden
Jürgen Geuter ([email protected]) — Einführung in Python 7/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# Kommentare mit #
# Zuweisung einer Variable
eins = 'String 'zwei = 42drei = [1, 2]vier = einsfuenf , sechs = drei
# einige Tests
eins == zwei # ergibt Falseeins == vier # ergibt True
Jürgen Geuter ([email protected]) — Einführung in Python 7/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# Bedingungen
# if(Bedingung):# Anweisungen
# elif(Bedingung):# Anweisungen
# else:# Anweisungen
#Beispiel:if(1==2):
print('Wird nie passieren ')else:
print('Wird immer passieren ')
Jürgen Geuter ([email protected]) — Einführung in Python 7/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# eigene funktionen definieren
# def myfunc(Argumente):# Anweisungen
# return Wert
# Beispiel
def vergleich(a,b):if (a==b):
return Trueelse:
return False
Jürgen Geuter ([email protected]) — Einführung in Python 7/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# Schleifen
# Beispiel
liste = [1, 2, 3, 4]
for wert in liste:print(2*wert)
i = 0while(i
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Datentypen
“einfache” Typen
string: ’abcdef’, "foo", """foobar"""int: 1, 42float: 0.1, 42.2, 1e3 (1000.0)
Listentypen
list: [0,1,2], [’a’,’b’], [1,’a’,0.3]tuple: (1,2), (’x’,’y’), (1,’c’)dict: {’name’: ’Horst’, ’age’: 30 }
Jürgen Geuter ([email protected]) — Einführung in Python 8/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Modulkonzept
Funktionalität wird in ”Modulen” gekapselt
jedes Python ”script” ist ein Modul
ein Modul kann aber auch ein Verzeichnis mit mehrerenUntermodulen sein
ein Modul kann beliebige Python Konstrukte enthalten(Module, Klassen, Funktionen)
die mitgelieferte Funktionalität liegt ebenfalls in Modulenvor (RegExpr, xmlrpc, ...)
Module werden mittels des import statementseingebunden (z.B. import re )
Jürgen Geuter ([email protected]) — Einführung in Python 9/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Objektorientierung
alles ist eine Klasseninstanz:
primitive Typen wie int und listModuleKlassen
Erben von den vordefinierten Klassen ist möglich, genausowie Mehrfachvererbung
eigene Klassen sollten von der vordefinierten Klassenobject erben, um vollen Zugriff auf alle Möglichkeiten zuhaben, müssen das aber nicht
Methoden in Instanzen, die auf die Instanz selbst zugreifenwollen, müssen self als ersten Parameter haben
Jürgen Geuter ([email protected]) — Einführung in Python 10/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# OO in Python
# class name(Super1, Super2 ,..):# myvar = "someValue"# def myfunc(self ,param1 ,...):# Anweisungen
class person(object):myname = None # None ist der "Nullwert"myage = Nonedef __init__(self , name , age):
self.myname = nameself.myage = age
# Instanziierung
horst = person("Horst Horstmann", 30)
Jürgen Geuter ([email protected]) — Einführung in Python 10/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# spezielle Methoden
class example(object):# der Konstruktor
def __init__(self):Anweisungen
# der Destruktor
def __del__(self):Anweisungen
# die lesbare Representation
def __repr__(self):return SomeString
Jürgen Geuter ([email protected]) — Einführung in Python 10/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Exceptions
Exceptions funktionieren ähnlich wie in Java
das Statement raise löst eine Exception auswerden mittels try und except behandeltaufräumen kann man mittels finallyein try Block hat entweder ein finally statementoder except Ausdrücke, niemals beidesExceptions sollten von der mitgelieferten KlasseException erben, es lässt sich aber jede beliebige Klasse”raisen”
die Python Library verwendet immer Exceptions alsFehlerbehandlungsmechanismus
Jürgen Geuter ([email protected]) — Einführung in Python 11/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# unsere kleine Exception
class myException(Exception):def __init__(self ,value):
self.error = value
try:raise myException("Passiert immer")
except myException ,e:print(e.error)
# gibt "Passiert immer" aus
Jürgen Geuter ([email protected]) — Einführung in Python 11/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
The Zen of Python (Exzerpt)
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently. Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one - and preferably only one -obviousway to do it.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a goodidea.
Jürgen Geuter ([email protected]) — Einführung in Python 12/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
# Listenmanipulation
woche = ['mo','di','mi','do','fr','sa','so']
# Slices:woche[3] # dowoche[-3] # frwoche[:3] # ['mo ', 'di ', 'mi']woche[:-3] # ['mo ', 'di ', 'mi ', 'do']woche[1:-3] # ['di ', 'mi ', 'do']
# Montage stinken
woche.remove('mo')#Aber zwei Sonntage klingt gut
woche.append('so')
Jürgen Geuter ([email protected]) — Einführung in Python 12/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
List comprehensions
Problem: Eine Liste aus Objekten filtern
alle Elemente der Liste um 1 reduzieren:liste=[1,2,3]
neu = [elem-1 for elem in liste]
# [0, 1, 2]
alle ungeraden Elemente einer Listeliste = [1,3,12]
neu = [elem for elem in liste if(elem%2==1)]
# [1, 3]
Jürgen Geuter ([email protected]) — Einführung in Python 13/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Magic Functions
Python verwendet Callbackmethoden für Operatoren undAusdrücke:
str () wird auf einer Instanz ausgeführt, wenn siemittels print ausgegeben wird
abs () wird aufgerufen, wenn abs() auf eine Instanzangewendet wird
a + b bedeutet eigentlich a. add (b) , so lassen sichOperatoren sinnvoll verwenden
Jede Instanz mit der Methode call () kann wie eineFunktion aufgerufen werden
Jürgen Geuter ([email protected]) — Einführung in Python 14/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
”Formatstrings”
Strings zu Formatieren ist oft lästig, ein Hoch aufFormatstrings!
print("Hallo %s" % "Peter")
ergibt: ”Hallo Peter”
print("Ich bin %i Jahre alt" % 27)
ergibt: ”Ich bin 27 Jahre alt”
print("Mein Name ist %s und ich bin %i Jahre
alt" % ("Peter", 27))
ergibt: ”Mein Name ist Peter und ich bin 27 Jahre alt”
print("Zahltag is am %02i. des Monats." % 5)
ergibt: ”Zahltag am 05. des Monats.”
Jürgen Geuter ([email protected]) — Einführung in Python 15/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Python Implementierungen
Wer Python kann ist überall zu Hause ;)
(c)Python: Die auf http://python.org angeboteneVersion (in C implementiert)
Jython: Python in Java implementiert, die PythonProgramme laufen somit in der JVM (man kann also auchvon Java Klassen erben, d.h. z.B. Applets in Pythonschreiben) http://jython.org
IronPython: Pythonimplementierung für .Nethttp://www.codeplex.com/Wiki/View.aspx?
ProjectName=IronPython
Jürgen Geuter ([email protected]) — Einführung in Python 16/20
http://python.orghttp://jython.orghttp://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPythonhttp://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Fazit
Python:
einfaches Erlernen (Easy to learn, hard to master)
hilft, übersichtlichen, wartbaren Quellcode zu schreiben
steht beim Arbeiten nicht im Weg, sondern hilft, Problemeeffizient zu lösen
frei, auf nahezu jedem Linux System automatischinstalliert, für diverse andere Plattformen verfügbar
Python Module sind plattformunabhängig* (bis auf die, dieschlecht programmiert oder spezifisch für eine Plattformsind)
sehr verbreitet, besitzt eine große Community und sehr vielDokumentation
Jürgen Geuter ([email protected]) — Einführung in Python 17/20
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Links
http://www.python.org (die offizielle Python Seite mitDokumentation)
http://www.ibiblio.org/obp/thinkCSpy/
”How to Think Like a Computer Scientist - Learning withPython”
http://www.diveintopython.org, sehr gutes Buchüber Python von Marc Pilgrim
http://www.python.org/dev/peps/pep-0020/ TheZen of Python
Jürgen Geuter ([email protected]) — Einführung in Python 18/20
http://www.python.orghttp://www.ibiblio.org/obp/thinkCSpy/http://www.diveintopython.orghttp://www.python.org/dev/peps/pep-0020/
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
vertiefende Links
http://www.sqlalchemy.org ein flexibles Python SQLToolkit um datenbankunabhängig performant zu arbeiten
http://www.pygtk.org/ GTK Bindings für Python
http://www.wxpython.org/ WXWidgets Bindings fürPython
http://www.djangoproject.com/ Django webframework
Jürgen Geuter ([email protected]) — Einführung in Python 19/20
http://www.sqlalchemy.orghttp://www.pygtk.org/http://www.wxpython.org/http://www.djangoproject.com/
-
Übersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit
Noch Fragen?
Jürgen Geuter ([email protected]) — Einführung in Python 20/20
ÜbersichtMotivationMetadatenPython SyntaxBasicsDatentypenModulkonzeptObjektorientierungExceptions
Programming PythonThe Zen of PythonAdvanced Python
Links/Fazit