Grundlagen von Python



Ähnliche Dokumente
Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Software Engineering Klassendiagramme Einführung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Qt-Projekte mit Visual Studio 2005

Software Engineering Klassendiagramme Assoziationen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Einführung in die Java- Programmierung

Vorkurs C++ Programmierung

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

10 Objektorientierte Programmierung, Teil 1

Objektorientierte Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Kurzanweisung für Google Analytics

Artikel Schnittstelle über CSV

Java: Vererbung. Teil 3: super()

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Archiv - Berechtigungen

Programmierkurs Java

Objektorientierte Programmierung

Spamfilter-Konfiguration für Outlook 2000 und höher

5.4 Bilder im Textfluss verankern

teischl.com Software Design & Services e.u. office@teischl.com

Scala kann auch faul sein

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

3 Objektorientierte Konzepte in Java

VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. Bachstraße 47, 3580 Mödring

Objektorientierte Programmierung OOP

Einführung in die Informatik Tools

Internet Explorer Version 6

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Version 0.3. Installation von MinGW und Eclipse CDT

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Arbeiten mit UMLed und Delphi

Tevalo Handbuch v 1.1 vom

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Kurzanleitung. Toolbox. T_xls_Import

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Internet und WWW Übungen

Programmieren in Java

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

Inkrementelles Backup

Online-Bestellung Tageskarten für Mitglieder des FC St. Pauli, die nicht im Besitz einer Dauer- oder Saisonkarte sind.

Anleitung Captain Logfex 2013

Grundlagen. Kapitel 1

Das Modul Hilfsmittel ermöglicht den Anwender die Verwaltung der internen Nachrichten, Notizen, Kontakte, Aufgaben und Termine.

FastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße Essen Telefon Telefax

Übungen zur Softwaretechnik

3. Stored Procedures und PL/SQL

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Java Kurs für Anfänger Einheit 5 Methoden

Innere Klassen in Java

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

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

IAWWeb PDFManager. - Kurzanleitung -

Vorlagen im Online Banking. Anlegen von Vorlagen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Support-Tipp Mai Release Management in Altium Designer

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

Objektorientierte Programmierung

Arbeiten mit dem neuen WU Fileshare unter Windows 7

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

e-books aus der EBL-Datenbank

Erklärung zum Internet-Bestellschein

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Software Engineering Klassendiagramme weiterführende Konzepte

Option 1: Hinzufügen eines Schritts zur Bearbeitungsliste... 2

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Adminer: Installationsanleitung

KURZANLEITUNG CLOUD OBJECT STORAGE

Subpostfächer und Vertretungen für Unternehmen

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

ACDSee Pro 3-Tutorials: Fotos (+ Datenbank) auf einen anderen Computer bringen

Excel Funktionen durch eigene Funktionen erweitern.

-Inhalte an cobra übergeben

Bedienung von BlueJ. Klassenanzeige

Einführung in die Programmierung (EPR)

Klassenbeziehungen & Vererbung

Einführung in die Programmierung

Client-Server-Beziehungen

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Professionelle Seminare im Bereich MS-Office

BUILDNOTES TOPAL FINANZBUCHHALTUNG

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann,

Konvertieren von Settingsdateien

Einführung in die Java- Programmierung

«Integration in WebSite» HTML-/Javascript-Code-Beispiele

Kompilieren und Linken

iphone-kontakte zu Exchange übertragen

Java Enterprise Architekturen Willkommen in der Realität

SEMINAR Modifikation für die Nutzung des Community Builders

Bauteilattribute als Sachdaten anzeigen

Erstellen einer in OWA (Outlook Web App)

Kapitel 6. Vererbung

macs Support Ticket System

Transkript:

Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015

Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren Klassen und Attribute Methoden Spezielle Methoden

Scriptcharakter Beim Ausführen oder Importieren wird der Code im obersten Level des Moduls (der.py Datei) ausgeführt Funktionen, Klassen und globale Variablen werden üblicherweise auf dem obersten Level definiert Imports anderer Python Module werden auch hier ausgeführt

Scriptcharakter 1 d e f main ( ) : 2 p a s s 3 4 i f name == main : 5 main ( ) Soll das entsprechende Modul ausführbar sein und nicht nur als Bibliothek dienen, definiert man üblicherweise eine main-funktion. Zusätzlich fügt man am Ende des Moduls die Boilerplate ein.

Scriptcharakter Python Code wird nicht kompiliert, sondern beim importieren in Python Bytecode übersetzt Bytecode wird auf einer VM ausgeführt Kein Memory Management nötig, alles sind Referenzen Syntaxerror wird beim Importieren geworfen Andere Fehler findet man erst, wenn die betreffende Zeile ausgeführt wird.

Programmierpradigmen Python ist vor allem eine imperative und objektorientierte Sprache reine Funktionen und Variablen können auf oberster Ebene definiert werden Variablen, Klassen und Funktionen sind ab der Ebene sichtbar, in der sie eingeführt werden

Das Problem mit dem Scope 1 v a r = 12 2 3 d e f f o o ( ) : 4 # e r w a r t e t e r Effekt : var wird auf 9 ge setzt 5 v a r = 9 6 7 d e f main ( ) : 8 p r i n t ( v a r ) # > g i b t 12 z u r u e c k 9 f o o ( ) 10 p r i n t ( v a r ) # > E r w a r t u n g : g i b t 9 a u s. 11 # R e a l i t a e t : g i b t 12 a u s. 12 13 i f name == main : 14 main ( ) Das Problem: Variablen sind zwar nach innen sichtbar, werden aber beim Reassignment innerhalb der Funktion neu angelegt und verschwinden so aus dem Scope.

Die Lösung 1 v a r = 12 2 3 d e f f o o ( ) : 4 g l o b a l v a r 5 # g l o b a l s a g t dem I n t e r p r e t e r, d a s s e r h i e r a u f d i e o b e r h a l b d e f i n i e r t e V a r i a b l e z u r u e c k g r e i f e n s o l l 6 v a r = 9 7 8 d e f main ( ) : 9 p r i n t ( v a r ) # > g i b t 12 z u r u e c k 10 f o o ( ) 11 p r i n t ( v a r ) # > g i b t j e t z t 9 a u s 12 13 i f name == main : 14 main ( )

Objektorientiertung Python ist auch fundamental objektorientiert Alles in Python ist ein Objekt Selbst die Datentypen int, bool, str und type sind Instanzen von object und haben folglich Methoden und Attribute Der Typ jedes Wertes und jeder Variable lässt sich mit type() ermitteln

Klassen und Attribute Typen in Python werden ausgedrückt durch Klassen (Keyword class) Klassen dienen als Vorlage bzw. Schablone -> Objekte sind dann Instanzen davon Die Besonderheit: alle Variablen und Werte sind Instanzen von object object und alle Typen selbst sind widerum Objekte, genauer gesagt Instanzen vom Typ type und type widerum ist eine Subklasse von object.

Klassen und Attribute Klassen und Objekte können selbst auch Variablen tragen (ähnlich wie in Java) Man unterscheidet dabei zwischen Klassenattributen und Instanzattributen Klassenattribute werden für die Klasse definiert und sind für alle Instanzen gleich Instanzattribute werden außerhalb der Klassendefnition hinzugefügt (normalerweise im Initialisierer) und sind für jede Instanz unterschiedlich.

Klassen und Attribute Zugriff auf Attribute über Punktnotation (wie in Ruby/Java) Attribute werden wie Variablen mithilfe von = gesetzt Man kann Objekten jederzeit neue Attribute hinzufügen (auch type-objekten) Ist außerhalb des Initialisierers nicht empfehlenswert

Methoden Methoden sind Funktionen Allgemeiner Typ von Methoden ist daher function Methoden liegen im Namespace der zugehörigen Klasse, müssen daher mit ClassName.method_name() angesteuert werden (oder auf dem Objekt aufgerufen werden) Methoden haben ein implizites erstes Argument (typischerweise "self" genannt, kann aber variieren) Beim Aufruf auf einer Instanz wird das Objekt selbst automatisch übergeben

Methoden Dies sind Methoden die auf den meisten Grundlegenden Datenstrukturen implementiert sind, z.b. object. Die Folgenden beginnen und enden normalerweise mit zwei Unterstrichen. Initialisierer Oft auch (fälschlicherweise) Konstruktor genannt. Name: init Wird immer aufgerufen wenn eine neue Instanz der Klasse erstellt wird. Finalisierer Oft auch (fälschlicherweise) Destructor genannt. Name: del Wird immer aufgerufen wenn das Objekt vom Garbage Collector aufgeräumt wird. (selten verwendet) String Konvertierer Äquivalent zu Java s tostring Methode. Name: str String Repräsentation Ähnlich wie str aber gedacht für eine für Debug verwendbare Repräsentation anstatt für Output wie str.

Klassen- und Objektattribute im Detail Klassenattribute sind für jede Instanz eines Objektes gleich. 1 c l a s s T e s t C l a s s : 2 # j e d e r I n s t a n z w i r d b e i E r s t e l l u n g b e r e i t s d i e s e s A t t r i b u t z u g e w i e s e n 3 num = 12 4 5 d e f main ( ) : 6 a = TestClass ( ) 7 b = TestClass ( ) 8 # b e i d e V a r i a b l e n haben f u e r num von d e r E r s t e l l u n g an den g l e i c h e n Wert 9 10 # d a s Aendern d e r V a r i a b l e u e b e r s c h r e i b t d a s K l a s s e n a t t r i b u t m i t einem I n s t a n z a t t r i b u t 11 a. num = 3 12 p r i n t ( b. num ) # > l i e f e r t immer noch 12

Klassen- und Objektattribute im Detail Gewöhnlich definiert man Instanzattribute allerdings im Initialisierer. 1 c l a s s Human : 2 d e f init ( s e l f, f i r s t n a m e, l a s t n a m e ) : 3 # d i e b e i d e n P a r a m e t e r w e r t e werden i n I n s t a n z a t t r i b u t e n g e s p e i c h e r t. 4 s e l f. f i r s t n a m e = f i r s t n a m e 5 s e l f. l a s t a m e = l a s t n a m e 6 7 d e f main ( ) : 8 # i n s t a n z i i e r t z w e i O b j e k t e vom Typ Human 9 matthias = Human ( " Matthias ", " Stuhlbein " ) 10 j o h n = Human ( "John ", "Doe" ) Instanzattribute sollten immer in init definiert werden, um sicherzustellen, dass alle Instanzen die gleichen Attribute haben