Einführung in Python



Ähnliche Dokumente
Grundlagen von Python

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Programmierkurs Python I

Objektorientierte Programmierung

Beispiel 19. December 4, 2009

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Python Zahlen, Strings Logik Kontrollstrukturen. Scriptsprachen. Python Basics. Sascha Winter

Algorithmen mit Python

Einführung in die Programmierung

Prinzipien Objektorientierter Programmierung

Skriptsprachen am Beispiel Python

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Einführung in die Programmiersprache Python

Erwin Grüner

Einführung in die Java- Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Professionelle Seminare im Bereich MS-Office

Objektorientierte Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

5. Tutorium zu Programmieren

Programmierkurs Java

Multimedia im Netz Wintersemester 2011/12

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

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

SEP 114. Design by Contract

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in Javadoc

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Scala kann auch faul sein

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Vorkurs C++ Programmierung

Objektorientierte Programmierung OOP

Selbststudium OOP4 Auftrag

10 Objektorientierte Programmierung, Teil 1

Algorithmen und Programmieren II Einführung in Python

Programmieren in Java

Übungen Programmieren 1 Felix Rohrer. Übungen

Was meinen die Leute eigentlich mit: Grexit?

Programmieren in Python

Programmierparadigmen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Arbeiten mit UMLed und Delphi

1 Was ist das Mediencenter?

Objektorientierte Programmierung

Übersicht Programmablaufsteuerung

Übung: Verwendung von Java-Threads

Java: Vererbung. Teil 3: super()

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

SEMINAR Modifikation für die Nutzung des Community Builders

Lua Grundlagen Einführung in die Lua Programmiersprache

Graphic Coding. Klausur. 9. Februar Kurs A

Was ich als Bürgermeister für Lübbecke tun möchte

Einführung in PHP. (mit Aufgaben)

Ein Leitfaden für Anfänger unter Zuhilfenahme frei verfügbarer Software! (bei z.b. Google Microsoft Powertoys suchen, oder diesen Link verwenden )

Diana Lange. Generative Gestaltung Operatoren

Tutorium Rechnerorganisation

Excel Funktionen durch eigene Funktionen erweitern.

Einführung in die C-Programmierung

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

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

Übung 9 - Lösungsvorschlag

E-PRIME TUTORIUM Die Programmiersprache BASIC

Luis Kornblueh. May 22, 2014

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Hochschule Darmstadt Fachbereich Informatik

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Dokumentation für das Spiel Pong

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Zwischenablage (Bilder, Texte,...)

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

SCHULUNG MIT SYSTEM: E-LEARNING VON RAUM21

Java Script für die Nutzung unseres Online-Bestellsystems

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Die Post hat eine Umfrage gemacht

Programmieren Tutorium

Lizenzierung von Windows Server 2012

Zählen von Objekten einer bestimmten Klasse

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

BERTSCH Dampftafel und Prozesse Excel-Makros FAQ

Javakurs 2013 Objektorientierung

Klassenbeziehungen & Vererbung

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Objektorientierung: Klassen und Objekte

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Testen mit JUnit. Motivation

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

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

Client-Server-Beziehungen

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Kontrollstrukturen - Universität Köln

Transkript:

Einführung in Python Jürgen Geuter (tante@emptiness.de) April 13, 2007 http://the-gay-bar.com Jürgen Geuter (tante@emptiness.de) Einführung in Python 1/20

1 Motivation 2 Metadaten 3 Python Syntax Basics Datentypen Modulkonzept Objektorientierung Exceptions 4 Programming Python The Zen of Python Advanced Python 5 Links/Fazit Jürgen Geuter (tante@emptiness.de) Einführung in Python 2/20

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 (tante@emptiness.de) Einführung in Python 3/20

Metadaten 1990 von Guido van Rossum (damals an der Universität Amsterdam, 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 (tante@emptiness.de) Einführung in Python 4/20

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 (tante@emptiness.de) Einführung in Python 5/20

Typisierung statisch dynamisch stark C, C++, C# schwach? Perl, Jürgen Geuter (tante@emptiness.de) Einführung in Python 6/20

Syntax-Basics Blockdefinition per Einrückung, keine { und } notwendig Variablen-/Funktionsnamen sind case-sensitive Variablen beginnen mit einem Buchstaben, können aber Zahlen, - und enthalten Zeilenenden müssen nicht markiert werden (kein ; ) Einrückungen können mittels Tab oder Leerzeichen gemacht werden Jürgen Geuter (tante@emptiness.de) Einführung in Python 7/20

# Kommentare mit # # Zuweisung einer Variable eins = ' String ' zwei = 42 drei = [1, 2] vier = eins fuenf, sechs = drei # einige Tests eins = = zwei # ergibt False eins = = vier # ergibt True Jürgen Geuter (tante@emptiness.de) Einführung in Python 7/20

# 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 (tante@emptiness.de) Einführung in Python 7/20

# eigene funktionen definieren # def myfunc ( Argumente ): # Anweisungen # return Wert # Beispiel def vergleich (a,b): if (a==b): return True else : return False Jürgen Geuter (tante@emptiness.de) Einführung in Python 7/20

# Schleifen # Beispiel liste = [1, 2, 3, 4] for wert in liste : print (2* wert ) i = 0 while (i<4): print (2* liste [i]) i+=1 Jürgen Geuter (tante@emptiness.de) Einführung in Python 7/20

Datentypen einfache Typen string: abcdef, "foo", """foobar""" int: 1, 42 float: 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 (tante@emptiness.de) Einführung in Python 8/20

Modulkonzept Funktionalität wird in Modulen gekapselt jedes Python script ist ein Modul ein Modul kann aber auch ein Verzeichnis mit mehreren Untermodulen sein ein Modul kann beliebige Python Konstrukte enthalten (Module, Klassen, Funktionen) die mitgelieferte Funktionalität liegt ebenfalls in Modulen vor (RegExpr, xmlrpc,...) Module werden mittels des import statements eingebunden (z.b. import re ) Jürgen Geuter (tante@emptiness.de) Einführung in Python 9/20

Objektorientierung alles ist eine Klasseninstanz: primitive Typen wie int und list Module Klassen Erben von den vordefinierten Klassen ist möglich, genauso wie Mehrfachvererbung eigene Klassen sollten von der vordefinierten Klassen object erben, um vollen Zugriff auf alle Möglichkeiten zu haben, müssen das aber nicht Methoden in Instanzen, die auf die Instanz selbst zugreifen wollen, müssen self als ersten Parameter haben Jürgen Geuter (tante@emptiness.de) Einführung in Python 10/20

# OO in Python # class name ( Super 1, Super 2,..): # myvar = " somevalue " # def myfunc (self, param 1,...): # Anweisungen class person ( object ): myname = None # None ist der " Nullwert " myage = None def init (self, name, age ): self. myname = name self. myage = age # Instanziierung horst = person (" Horst Horstmann ", 30) Jürgen Geuter (tante@emptiness.de) Einführung in Python 10/20

# 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 (tante@emptiness.de) Einführung in Python 10/20

Exceptions Exceptions funktionieren ähnlich wie in Java das Statement raise löst eine Exception aus werden mittels try und except behandelt aufräumen kann man mittels finally ein try Block hat entweder ein finally statement oder except Ausdrücke, niemals beides Exceptions sollten von der mitgelieferten Klasse Exception erben, es lässt sich aber jede beliebige Klasse raisen die Python Library verwendet immer Exceptions als Fehlerbehandlungsmechanismus Jürgen Geuter (tante@emptiness.de) Einführung in Python 11/20

# 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 (tante@emptiness.de) Einführung in Python 11/20

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 -obvious way 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 good idea. Jürgen Geuter (tante@emptiness.de) Einführung in Python 12/20

# Li st en ma ni pu la ti on woche = [ 'mo ','di ','mi ','do ','fr ','sa ','so '] # Slices : woche [3] # do woche [-3] # fr woche [: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 (tante@emptiness.de) Einführung in Python 12/20

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 Liste liste = [1,3,12] neu = [elem for elem in liste if(elem%2==1)] # [1, 3] Jürgen Geuter (tante@emptiness.de) Einführung in Python 13/20

Magic Functions Python verwendet Callbackmethoden für Operatoren und Ausdrücke: str () wird auf einer Instanz ausgeführt, wenn sie mittels print ausgegeben wird abs () wird aufgerufen, wenn abs() auf eine Instanz angewendet wird a + b bedeutet eigentlich a. add (b), so lassen sich Operatoren sinnvoll verwenden Jede Instanz mit der Methode Funktion aufgerufen werden call () kann wie eine Jürgen Geuter (tante@emptiness.de) Einführung in Python 14/20

Formatstrings Strings zu Formatieren ist oft lästig, ein Hoch auf Formatstrings! 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 (tante@emptiness.de) Einführung in Python 15/20

Python Implementierungen Wer Python kann ist überall zu Hause ;) (c)python: Die auf http://python.org angebotene Version (in C implementiert) Jython: Python in Java implementiert, die Python Programme laufen somit in der JVM (man kann also auch von Java Klassen erben, d.h. z.b. Applets in Python schreiben) http://jython.org IronPython: Pythonimplementierung für.net http://www.codeplex.com/wiki/view.aspx? ProjectName=IronPython Jürgen Geuter (tante@emptiness.de) Einführung in Python 16/20

Fazit Python: einfaches Erlernen (Easy to learn, hard to master) hilft, übersichtlichen, wartbaren Quellcode zu schreiben steht beim Arbeiten nicht im Weg, sondern hilft, Probleme effizient zu lösen frei, auf nahezu jedem Linux System automatisch installiert, für diverse andere Plattformen verfügbar Python Module sind plattformunabhängig* (bis auf die, die schlecht programmiert oder spezifisch für eine Plattform sind) sehr verbreitet, besitzt eine große Community und sehr viel Dokumentation Jürgen Geuter (tante@emptiness.de) Einführung in Python 17/20

Links http://www.python.org (die offizielle Python Seite mit Dokumentation) http://www.ibiblio.org/obp/thinkcspy/ How to Think Like a Computer Scientist - Learning with Python http://www.diveintopython.org, sehr gutes Buch über Python von Marc Pilgrim http://www.python.org/dev/peps/pep-0020/ The Zen of Python Jürgen Geuter (tante@emptiness.de) Einführung in Python 18/20

vertiefende Links http://www.sqlalchemy.org ein flexibles Python SQL Toolkit um datenbankunabhängig performant zu arbeiten http://www.pygtk.org/ GTK Bindings für Python http://www.wxpython.org/ WXWidgets Bindings für Python http://www.djangoproject.com/ Django web framework Jürgen Geuter (tante@emptiness.de) Einführung in Python 19/20

Noch Fragen? Jürgen Geuter (tante@emptiness.de) Einführung in Python 20/20