• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[Python] Einstieg leicht gemacht

Status
Für weitere Antworten geschlossen.

prostel

Neues Mitglied
Guten Tag, und willkommen zu meinem ersten kleinen Tutorial
zu der Programmiersprache Python. Bevor ich anfange, würde ich
gerne ein paar Worte loswerden. Tutorials zu Programmiersprachen
schreiben ist echt schwer!! Man weiss überhaupt nicht wirklich,
wo man anfangen bzw aufhören soll. Das habe ich nach einem
gewissen Zeitraum auch gemerkt. Zuerst waren 4 Punkte in meiner
Anfangsliste, nun sind es 7. In der Erweiterung waren es 4,
nun sind es 7. Es kam einfach immer noch etwas dazu :D
Naja wie auch immer, nun meine Themen:
  1. Einleitung
    1. Vorteile
    2. Nachteile
    3. Anwendungsfälle
  2. Welcher Editor
  3. Installation
  4. Unser erstes Kleines Hello World
  5. Variablen
  6. Kommentare
  7. Sinnvolles Nutzen von Modulen
  8. Eingaben
Welche Punkte sind noch geplant:
  1. 8. Listen, Tuples, Dictionaries
  2. 9. If, Elif, Else, While, For
  3. 10. Wie geht man mit Fehlern um (Exceptions)
  4. 11. Klassen
  5. 12. Erweitertes Script
  6. 13. Kleine GUI Applikation
  7. 14. Große GUI Applikation
Weitere Punkte werden, sofern erwünscht, folgen.
In was für einem Zeitraum alle Punkte kommen ist noch nicht
klar, und hängt immer von meiner persönlichen Arbeits-Auslastung
ab. Sofern ich Zeit habe, schreibe ich wieder etwas :)

Quellen: http://www.wikipedia.de , http://www.python.org


1. Einleitung
Python ist eine vollständig Objektorientierte Programmiersprache.
Die Entwicklung begann im Dezember 1998 und wurde von nur
einem Mann, Guido van Rossum vorangetrieben. Ziel war es, eine
übersichtliche und einfach zu lernende Programmiersprache zu
entwickeln.

Ich persönlich bin vor ca. 3 Jahren zu Python gekommen und war
begeistert. Hatte zuvor nur mit C++ gearbeitet. An sich mochte
ich diese Sprache auch, doch nach kurzer Zeit überwiegte meine
Motivation Python zu nutzen. Gründe dafür siehe 1.1(Vorteile).
Heute arbeite ich größtenteils mit Ruby auf Grund von Rails,
diese Sprache ist Python recht ähnlich. Für alle Anfänger die
sich nun fragen, warum sollte ich mit Python anfangen, nenne ich
gleich ein paar Vorteile.

An wen richtet sich das Tutorial?
Tja... eine sehr schwere Frage...wo fängt man an wo hört man
auf :) Würde ich jede Kleinigkeit erklären, würde dieses Tutorial
wohl 100 Seiten umfassen, daher ist es eher an Leute gerichtet,
die schon Erfahrungen mit dem Programmieren haben, die allerdings
nichts von Python verstehen. Es fängt ganz leicht an, die ersten Teile
können erfahrene Leute wohl auslassen, erst später dürfte es für Sie
interessant werden. Was ich aber dennoch nicht machen werde ist,
das ich erkläre was Parameter sind, oder worin der Unterschied zwischen
Funktionen und Methoden besteht. Solch Dinge sind sehr gut bei Wikipedia
nachzulesen und ich werde sie entsprechend verlinken!
Nun soll es aber losgehen ;)
Theorie oder Praxis?
Größtensteils praxis, da man aber ein paar Kleinigkeiten schon wissen
sollte, werde ich ab und an auch ein wenig theoretisches Wissen
preisgeben(und vielleicht langweilen ;)).

1.1 Vorteile
- Sehr leicht zu lernen! (hört sich subjektiv an, ist es auch) ;)
- Plattformunabhängig
- Einrückungspflicht, daraus ergibt sich automatisch sauberer Code
- Python bietet sehr viele Standardbibliotheken mit denen man
einiges machen kann.
- Große Community - Viele Module im Internet zu finden
- Exceptionhandling (Fehler lassen sich sauber abfangen, keine
IF - Else Konstrukte mehr)
- Übersichtliche und kleine Scripte (persönliche Erfahrung:
1/3 eines C++ Scriptes)

1.2 Nachteile
- Keine gescheite Entwicklungsumgebung zum Erstellen von GUI
Anwendungen(wie z.B. Visual Studio)
- Ausführungsgeschwindigkeit ist geringer als bei C / C++. Daher
sollte man sehr sehr Zeitkritische Abschnitte in den genannten
Sprachen schreiben.

1.3 Anwendungsfälle
Ich persönliche habe Python größtenteils für kleine Scripte
genutzt, die mir den Alltag erleichtern sollten. Z.B. ein
Script welches mir automatisch bestimmte Verzeichnisbäume durchsucht,
und alle JPGs, GIFs, PNGs etc in eine bestimmte Größe umwandelt.
Auch habe ich schon ein paar GUI Anwendungen geschrieben, z.B. einen
Packer a la WINZIP oder Tools für die Verwaltung mit denen sie
bestimmte Abläufe automatisieren konnten. Auch recht beliebt ist
ZOPE ( ähnlich wie Ruby on Rails , aber etwas komplizierter und
weniger Benutzerfreundlich ) mit dem ich schon einige Content
Management Systeme erstellt habe. Das waren alles nur Beispiele,
bei denen ich selbst damit zu tun hatte. Python wird natürlich auch
für weitaus komplexere Dinge verwendet. Z.B. wurde einige Bereiche für
Battlefield Vietnam und Civilisation 4 damit geschrieben.
Auch YouTube und Google nutzen die Sprache.

1.4. Welcher Editor
GNARF, diese Frage liebe ich ja, aber da sie eh gestellt wird,
fange ich sie lieber vorher ab :D
Welchen Editor benutze ich: UltraEdit
Welchen kann ich empfehlen: Wordpad!, Scite, PyDEV und natürlich
UltraEdit. Im Endeffekt jeden, der Syntaxhighlighting unterstützt
d.h. der Editor ist eigentlich völlig egal, erst bei komplexeren
Anwendungen in Teams sollte man sich für PyDEV entscheiden.

2. Installation
Python existiert für den Mac und nahezu alle Windows/Linux
Versionen/Distributionen. Da ich selbst keinen Mac besitze
und ich davon ausgehe, das jeder Linux User Python selbst
installieren kann, werde ich nur kurz die Windows 2000
Installation durchgehen.
- http://www.python.org/download/
- Wir suchen uns den 1. stabilen Windows Installer
- In meinem Fall http://www.python.org/ftp/python/2.5/python-2.5.msi
- Installation starten.

Unser 1. Test soll das starten von Python aufder Konsole
sein. Dazu öffnen wir diese unter Windows: Start -> Ausführen -> CMD
Nun geben wir "python" ein (natürlich ohne " ")
Sollte nun ungefähr folgendes stehen (unterscheidet sich
natürlich ein wenig von Version zu Version):
Code:
  Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
  Type "help", "copyright", "credits" or "license" for more information.
haben wir alles richtig gemacht und Python ist voll
einsatzbereit! Sollte allerdings folgende Ausgabe kommen:
Code:
  Der Befehl "python" ist entweder falsch geschrieben oder
  konnte nicht gefunden werden.
hat sich Python nicht/falsch in den Umgebungsvariablen
eingetragen (hatte ich schon oft bei manchen Versionen).
Um dieses Problem zu beheben machen wir folgendes:
Start -> Einstellungen -> Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen
Nun suchen wir im Systemvariablen Bereich die Variablen
Path und editieren sie. Man hängt nun einfach "C:\Python25\"
an den bereits bestehenden Text ran. Der Pfad sollte natürlich
eurem Python Pfad entsprechen.


3. Hello World
Nun wählen wir nochmal einen etwas hübscheren Weg um Scripte
zu erstellen. Dazu erstellen wir eine Datei mit dem Namen
"hello.py", öffnen diese mit einem beliebigen Editor und
schreiben dort folgendes rein:
Code:
def hello_world():
    print "Hello World"
  
hello_world()
Nun speichern wir die Datei ab, öffnen wieder wie in Schritt 2
die Console und wechseln in den Pfad, wo unsere hello.py liegt.
Befinden wir uns in dem Pfad, geben wir folgendes ein: hello.py
oder python hello.py Und am Bildschirm sollte "Hello World"
erscheinen

Nun genug herum gelabert, ab zu den Erklärungen.
Code:
  def hello_world():
Mit def xyz definieren wir eine Funktion, in unserem Fall
hello_world. Die hello_world Funktion hat 0 Parameter.
Der Doppelpunkt ähnelt in anderen Sprachen der geschweiften
Klammer {. Da es in Python allerdings keine schließende
"Klammer" gibt, verwendet Python ein einzigartiges Einrückungssystem,
um Funktionen, Schleifen oder Abfragen voneinander zu trennen.
Wie weit man einrückt ist völlig egal, solange der gesamte
Code in einer Funktion/Schleife/Abfrage gleich weit eingerückt ist.
Mit print "hello world" geben wir normalen Text auf der Console aus.
 
Zuletzt bearbeitet von einem Moderator:

prostel

Neues Mitglied
4. Variablen
In Python ist alles ein Objekt und da Datentypen wie Integer
oder String direkt an das Objekt und nicht an die Variable
gebunden werden, ist eine dynamische Typenverwaltung im Gegensatz
zu C++ oder Java möglich. Hört sich nun verrückt an,
ist in der Praxis aber total einfach.
Ein kleines Beispiel:
Code:
  def hello_world():
    hello = "Hello World"
    print hello
    hello = 100
    print hello
    hello = "world " + str(100)
    print hello
    hello = "world " * 10
    print hello
 
  hello_world()
Folgende Ausgabe sollte nun erscheinen:

Hello World
100
world 100
world world world world world world world world world world

Was passiert hier genau, ändere ich immer wieder meine
zuvor erstellte Variable? Kurz und bündig - nein. In
Python sind die meisten Objekte immutable(unveränderlich),
d.h. wenn man etwas an der Variablen "ändert", wird die Referenz auf
das Objekt gelöscht, jenes wird dann per Garbage Collector
weggeräumt und ein neues Objekt mit einer Referenz auf es
wird erstellt.

Was ich damit nun sagen möchte ist folgendes: Man muss
bei Python nicht solange überlegen, von welchem Typ meine
Variable nun sein muss oder wielang meine Liste wird
(näheres hierzu kommt später)

Generell bleibt ein Problem allerdings vorhanden,
wie nachlässig geht man mit seinen Variablen um?
Wie oben gesagt muss man sich nicht mehr viele
Gedanken darüber machen, bei kleinen Scripten ist
das absolut kein Problem, wird es aber aufwendiger
MUSS man sich zwangsläufig Gedanken machen. Da mögen
sich manche manchmal schon die statische Variablen
Deklaration zurück wünschen (ist man aber etwas
erfahrener im Umgang mit Python, möchte man nie wieder
zurück :))

5. Kommentare
Kann ich meinen Quellcode in Python kommentieren? Ja natürlich...
Code:
  def hello_world():
    #gleich folgt eine ausgabe mit print
    print "Hello World"
    #das war die ausgabe
 
  hello_world()
Diese Kommentar Funktion ähnelt allen anderen Sprachen auch z.b.
PHP = //Hallo
C++ = //Hallo
JAVA = //Hallo

Möchte man Kommentare über mehrere Zeilen machen,
gibt es zwei Möglichkeiten:
Möglichkeit 1:
Code:
  def hello_world():
    #kommentar 1
    #kommentar 2
    print "Hello World"
 
  hello_world()

Möglichkeit 2:
Code:
  def hello_world():
    """
    Dies ist ein sogenannter docstring,
    er wird verwendet, um Methoden oder Klassen eine
    Beschreibung zu geben, die spaeter aus der normalen python
    console ueber die Python Help Funktion aufgerufen werden
    kann
    """
    print "Hello World"

  hello_world()

Geht man nun in die console, begibt sich in den
Pfad in dem das hello.py Script liegt, und gibt
dort folgendes ein:
Code:
  python
  import hello
  help(hello)
Erscheint folgende Ausgabe:
Code:
  >>> help(hello)
  Help on module hello:
 
  NAME
      hello
 
  FILE
      c:\hello.py
 
  FUNCTIONS
      hello_world()
          Dies ist ein sogenannter docstring,
          er wird verwendet, um Methoden oder Klassen eine
          Beschreibung zu geben, die spõter aus der normalen python
          console ³ber die Python Help Funktion aufgerufen werden
          kann



6. Sinnvolles Nutzen von Modulen
Wie schon am Anfang erwähnt, verfügt Python über
eine recht große Auswahl von Standardbibliotheken
die bei der Installation vorhanden sind. Eine
Übersicht aller Module findet man hier
Ich möchte in diesem Fall kurz auf ein Modul genauer eingehen.

OS:
Dieses Modul erlaubt einem Operationen an Dateien
und Verzeichnissen.

Tja, nun mag sich der Fachmann fragen, was bringt mir
das wenn ich nicht weiss wie ich Module nutze.
Deshalb folgt die Erklärung sofort ;)

Code:
  import os
 
  def hello_world():
    print "Hello World, momentan bin ich hier: " + os.getcwd()
    print "Und was liegt alles in diesem Ordner?"
    print os.listdir(".")
 
  hello_world()

Mit import MODULNAME wird das Modul in den Namensraum
geladen, so dass es verwendet werde kann. Über die
Punkt-Notation kann man dann auf einzelne Methoden
zugreifen. Was die Methoden machen, steht ebenfalls auf
der Modul-Seite. In diesem Fall ist dieser Link
hilfreich: KLICK MICH getcwd = get current working directory
gibt das aktuelle Verzeichnis aus listdir() muss immer
mit einem Parameter gefüttert werden, dem Verzeichnis.
Dann gibt es alle Ordner und Dateien aus dem Verzeichnis
in Listenform zurück.

Alternative zu dem Code oben (wenn man z.B. genau weiß,
das man nur getcwd und listdir braucht)

Code:
  #importiere NUR getcwd
  from os import getcwd
  #importiere NUR listdir aber verwende es unter dem Namen ldir
  from os import listdir as ldir
 
  def hello_world():
    print "Hello World, momentan bin ich hier: " + getcwd()
    print "Und was liegt alles in diesem Ordner?"
    print ldir(".")
 
  hello_world()

Wie importiert man ein Modul AUF GAR KEINEN FALL!!!
Code:
  from os import *
Warum nicht? Ganz einfach, wählt man diese Art des
Imports, werden alle Methoden die OS besitzt geladen,
bei kleinen Modulen mag das vielleicht noch halbwegs
gehen, wählt man aber z.B. ein Modul wie WX welches
hunderte Methoden hat, wird es schwer, diese zu
überschauen und nicht ausversehen zu überschreiben.

7. Eingaben
Wer kennt es nicht, man fängt mit einer neuen Programmiersprache
an, und bastelt sich solch Klassiker Spiele wie z.B.
errate die Zahl oder Gib deinen Namen an... Für so etwas wird
eine Eingabe benötigt. Ich stelle nur eine Art der Eingabe
vor, die man auch immer verwenden sollte und zwar raw_input().
Die 2. nenne ich nur kurz: input(). Bitte vorerst nicht verwenden!
Fangen wir mit einem ganz simplen Beispiel an, man gibt
seinen Namen an und wird nett gegrüßt:
Code:
  def gib_mir_deinen_namen():
    name = raw_input("Wie ist dein Name? ")
    print "Ihr Name lautet " + name
 
  gib_mir_deinen_namen()
Gleiches Spiel wie eben, Funktion erstellen und mit
Inhalt füllen. raw_input() liefert generell einen String
zurück. Gibt man ihm einen Parameter mit, wie in unserem
Fall "Wie ist dein Name?", wird dieses als Ausgabe vor
die Eingabe gesetzt.

Und hier nochmal eine etwas hübschere Variante die ich
aber erstmal unkommentiert lassen möchte:
Code:
  def gib_mir_deinen_namen():
    return raw_input("Wie ist dein Name? ")
 
  print "Ihr Name lautet %s" %(gib_mir_deinen_namen())

Ein weiteres Beispiel mit raw_input: Wie oben gesagt
liefert raw_input() immer einen String zurück. Was aber
nun, wenn man z.B. einen Rechner bauen möchte der 2 Zahlen
addiert? Das wird ja schlecht mit Strings gehen!
Code:
  def rechne_mir_was_aus():
    zahl1 = raw_input("Summand 1: ")
    zahl2 = raw_input("Summand 2: ")
    summe = zahl1 + zahl2
    print "Die Summe der beiden Werte lautet: " + summe
 
  rechne_mir_was_aus()
Ausgabe:
Summand 1: 10
Summand 2: 10
Die Summe der beiden Werte lautet: 1010

Huch?! Da hat Python doch tatsächlich 2 Strings "addiert"...
Nun gut, nicht ganz das was wir wollten, aber man hat was
gelernt :) Nun die richtige Lösung:
Code:
  def rechne_mir_was_aus():
    zahl1 = int(raw_input("Summand 1: "))
    zahl2 = int(raw_input("Summand 2: "))
    summe = zahl1 + zahl2
    print "Die Summe der beiden Werte lautet: " + str(summe)
 
  rechne_mir_was_aus()
Was haben wir geändert? Um 2 Zahlen zu addieren, müssen wir
daraus auch Integer Werte machen, das geschieht mit int().
Um am Ende aber einen String und einen Integer zusammen ausgeben
zu können, muss der Integer wieder in einen String "verwandelt"
werden. Als Alternative dazu würde auch folgendes funktionieren:
print "Die Summe der beiden Werte lautet: %s" %(summe)

Damit möchte ich mein noch sehr kleins und bescheidenes
Tutorial beenden. Sobald ich wieder etwas Zeit habe,
werde ich die nächsten Punkte abarbeiten. Diese dürften dann
für Programmiererfahrenere schon interessanter sein.
 
Status
Für weitere Antworten geschlossen.
Werbung:

Neueste Beiträge

Oben