Top Banner
¨ Ubersicht Motivation Metadaten Python Syntax Programming Python Links/Fazit Einf¨ uhrung in Python urgen Geuter ([email protected]) April 13, 2007 http://the-gay-bar.com urgen Geuter ([email protected]) — Einf¨ uhrung in Python 1/20
28

Einführung in Python · 2017. 5. 26. · Ubersicht¨ Motivation Metadaten Python Syntax Programming Python Links/Fazit 1 Motivation 2 Metadaten 3 Python Syntax Basics Datentypen

Feb 02, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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