Skip to content

Instantly share code, notes, and snippets.

@Der-Eddy
Last active February 17, 2017 20:55
Show Gist options
  • Save Der-Eddy/926494d14e1bdf1bbb8053dab81a66af to your computer and use it in GitHub Desktop.
Save Der-Eddy/926494d14e1bdf1bbb8053dab81a66af to your computer and use it in GitHub Desktop.
Python Theorie & Tipps

python logo

#Allgemeine Infos

Dieser Guide soll als zusätzliche Hilfe beim lernen von Python dienen, am besten machst du einen Python Kurs bei SoloLearn oder CodeCademy.

#Python 2 und Python 3

Python 3 ist inzwischen 8 Jahre alt und sollte eigentlich schon vor LANGER Zeit seinen Vorhänger Python 2 ablösen, Python 3 hatte jedoch große Änderungen die zwar oft vieles besser gemacht haben aber dafür die Portierung erschwert haben. Allgemein gilt, wenn man direkt mit Python 3 ein Projekt anfängt hat man am Ende weniger Probleme mit der Wartung.

Größter Unterschied für Anfänger ist der print Befehl bzw. Schlüsselwort

Während in Python 2 (Codecademy) print noch ein Schlüsselwort ist und so gebraucht:

print "Hello World!"

Ist in Python 3, print eine Funktion und diese erfordert runde Klammern:

print ("Hello World!")

Die meisten anderen Unterschiede sind nicht wirklich wichtig wenn man nicht schon mit Python 2 gearbeitet hat, eine etwas längere Erläuterung gibt es hier: https://blog.eddydev.de/development/2016/04/08/python-2-vs-3.html

Lokale Umgebung

Um Python Code lokal auf eurem Computer auszuführen, benötigt ihr zu aller Erst Python selber: https://www.python.org/downloads/
Einfach unter "Download the latest version" die Python 3 Version runterladen und installieren. Anschließend habt ihr nicht nur Python installiert sondern auch eine Python Konsole sowie IDLE, ein Mini-Editor für Python.

Weil Beides sehr limitiert ist, empfehle ich die Installation einer passenden IDE bzw. Editor wie z.B. PyCharm. PyCharm empfiehlt sich vor allem für Anfänger da man nicht viel anpassen muss damit man bereit ist.

#Syntax

Ein Syntax ist eine Ordnung bzw. Reihenfolge wie etwas abläuft, bei Programmiersprachen ist das wie man Befehle, Schlüsselwörter, Methoden und andere Konstrukte anwendet.

z.B. definiert man eine Funktion so:

def my_func():
    #do something
    something = "I did it!"
    return something

während man das aufrufen einer solchen, so benutzt:

#Gibt "I did it!" in die Konsole aus
print(my_funct())

Hällt man sich nicht an den Syntax in Python, so bekommt man schnell Fehlermeldungen und nichts läuft. Python legt großen Wert auf einen sauberen Syntax und ordentliche Einrückungen.

In anderen Sprachen, würde man den Syntax wahrscheinlich mit der Grammatik gleich setzen, dort geht es auch darum wann ein Wort in einem Satz gestellt wird.

#Python Konsole

Die Python Konsole kann entweder in der normalen Konsole durch python ausgeführt werden oder man startet den mitgelieferten Mini-Editor IDLE

IDLE:

IDLE

Konsole:

Konsole

Dort kann man schnell ein paar Befehle austesten ohne gleich eine neue Python Script Datei anzufangen.

#Python Script Dateien

Python Scripte benutzen die Dateiendung *.py. Zusätzlich gibt es noch *.pyc Dateien sowie einen __pycache__ Ordner, diese werden jedoch automatisch vom Python Interpreter generiert und sollten fürs Erste nicht stören.

Python Scripte

Nützlich ist übrigens auch ein Shebang (#!) am Anfang einer Script Datei. Das Shebang gibt an mit welchem Interpreter die Script Datei ausgeführt werden soll (z.B. Python3), Shebangs funktionieren nur teilweise unter Windows.

Beispiel Linux:

#!/usr/bin/env python3
import ...
etc ...

Oder

#!/usr/bin/python3
import ...
etc ...

Und Windows:

#!C:\tools\python3.5\Python.exe
import ...
etc ...

#pip

pip ist ein Werkzeug welches in Python 3 vorinstalliert ist, es ermöglicht externe Pakete zu installieren und für deine Python Installation zu nutzen.

Eine Auflistung von öffentlichen Paketen gibt es dabei im PyPi Package Index. Diese Paketen können entweder Bibliotheken sein oder sogar ganze Programme.

Um ein Paket zu installieren öffnet man die Konsole und gibt:

pip install <PAKETNAME>

ein

pip konsole

anschließend kann man das jeweilige Paket/Bibliothek benutzen, zu beachten sei das dabei das Paket immer nur auf die aktuelle Python Installation wirkt. Installiert man ein neues Python Update so muss man sich seine Pakete erneut runterladen. Da dieses Vorgehen nicht super effizient ist, gibt es noch sowas wie virtualenv wo man pip Pakete nur lokal installiert, mehr dazu später.

Im Falle von requests (siehe Screenshot oben), kann man diese Bibliothek jetzt in ein Python Script importieren und nutzen:

    import requests

Welche Methoden diese dann beinhaltet, liest man am besten in der Dokumentation der Bibliothek nach.

>#Prozedurale Programmierung

Prozedurale Programmierung ist die einfachste Form wie man Code ablaufen lässt, dabei wird der Code von oben nach unten ausgeführt

print ("Ich werde zuerst ausgegeben")
print ("Ich werde zuletzt ausgegeben")

Dies ist besonders für Anfänger einfach verständlich und hilft bei kleineren Projekten den Überblick zu behalten.

#Objektorientierten Programmierung

Das objektorientierten Programmieren ist ein besserer Ansatz um auch bei größeren Projekten den Überblick zu behalten, ist jedoch für Anfänger oft erst verständlich wenn man bereits die Grundlagen versteht.

class Main:
    def __init__(self):
        print ("Ich werde zuletzt ausgegeben")
        
if __name__ == '__main__':
    print ("Ich werde zuerst ausgegeben")
    Main()

Dabei werden Programmabschnitte in Objekte verstaut und kann diese einfacher verwalten, sogar über verschiedene Python Dateien hinaus über!

#Virtualenv

virtualenv is a tool to create isolated Python environments.

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

Work in Progress

#PEP 8 Styling Guide

PEP 8 ist eine Auflistung von Konventionen um seinen Code einfacher und leserlicher für andere zu gestalten. Viele die mit Python arbeiten bestehen darauf diese einzusetzen um auf einen gemeinsamen Nenner in der Programmierung zu kommen.

Eine "PEP" ist ein Design-Dokument für ein bestimmtes Thema, diese können zum Beispiel erklären wie man etwas bestimmtes in Python nach einer Konvention benutzt oder einen Vorschlag für eine Verbesserrung von Python. In PEP 1 wird die genaue Definition einer PEP genauer erläutert.

#Abschließende Tipps und Tricks

###Script nur ausführen wenn man es direkt startet Dieses Vorgehen ist z.B. nützlich wenn man ein Script schnell testen möchte, es jedoch eigentlich in ein anderes importiert wird. Dazu setzt man alles was nur beim direkten ausführen laufen soll in diesen Codeblock:

if __name__ == '__main__':
    #do something
    print ("Ich teste hier nur!")

Dieses überprüft ob das Script nicht von einem Modul (importiert) gestartet wird, ansonsten ist __name__ dann nämlich '__main__'. Wird das Script importiert dann ist __name__ der Name des Moduls.

###List Comprehensions List Comprehensions sind kleine Einzeiler Befehle welche schnell und einfach Listen verändern lassen, z.B. haben wir eine Liste lst = [2, 3, 5, 6, 9] und möchten alle Zahlen in dieser verdoppeln.

Ansatz mit einer normalen For Schleife:

lst = [2, 3, 5, 6, 9]
for i in range(len(lst)):  
    lst[i] = lst[i] * 2

Das geht jedoch auch kürzer und einfacher
Ansatz mit List Comprehensions:

lst = [2, 3, 5, 6, 9]
lst = [i * 2 for i in lst]

Ein weiterer Pluspunkt ist das List Comprehensions schneller und effizienter arbeiten als die übliche For Schleife.

###String Formatierung Oft möchte man in einen String ein paar Variablen einfügen, ein Ansatz wäre z.B.

strName = 'String'
str = 'Ich bin ein' + strName + '!'

Das ist vielleicht noch übersichtlich, wird aber viel länger wenn man einen langen String und viele Variablen hat. Aber es gibt str.format:

strName = 'String'
strMethod = 'Methode'
str = 'Ich bin ein {0} und habe eine eingebaute {1}!'.format(strName, strMethod)

###Tuple return Eine Funktion bzw. Methode kann einen Wert zurückgeben über return, jedoch kann man auch ein Tuple zurück geben und damit mehrere Werte.

def binary():
    return 0, 1

zero, one = binary()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment