Python
# encoding: utf-8
from __future__ import (print_function,
division,
unicode_literals,
absolute_import)
Einfachstes Beispiel:
print('Hello, World!')
Zum Vergleich: C++
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout << "Hello, World!" << endl;
return 0;
}
Python stellt bereit:
True, False423.14'Test' oder "Test"
a = 2
b = 3
a + b
namen = ['foo', 'bar', 'baz']
namen[1]
zahlen = { 'eins': 1, 'zwei': 2, 'drei': 3 }
zahlen['zwei']
Variablennamen können auch überschrieben werden:
a = 42
b = a
a = 0
b
Es gibt:
+, -, *** (Potenzieren: 2**3 → 8)/ (3 / 2 → 1.5 mit __from__ future import division)// (3 // 2 → 1)% (Divisionsrest)
[1, 2, 3] + [4, 5]
geben True oder False zurück
==, !=>, <, >=, <='Test' == 42
and, or, not, in
print('Hello!')
len([1, 2, 3, 4, 5])
from math import cos
cos(1.0)
Viele Funktionen können beliebig viele Argumente haben:
print(1, 2, 3, 4, 5)
Man kann auch sogenannte Keyword-Arguments übergeben:
print(1, 2, 3, sep=', ')
Objekte haben auch Funktionen (nennt man Methoden):
'foo bar baz'.split()
s = 'test'
s.upper()
In IPython kann man wie folgt auf die Dokumentation einer Funktion zugreifen:
print?
Ansonsten findet man ausführliche Erklärungen in der offiziellen Dokumentation.
Jede Zeile eines Python-Programms wird nacheinander durchlaufen.
Die Kontrollstrukturen erlauben mehr Kontrolle über den Ablauf.
# dies ist ein Kommentar
if 1 == 3:
# muss eingerückt werden, 4 spaces:
print('foo')
elif 1 == 2:
print('bar')
else:
print('baz')
while-Schleifen: Wiederholen, solange ein bestimmter Ausdruck True zurück gibti = 0
while i < 5:
print(i)
i += 1
for-Schleifen: Wiederholen für jedes Element (z.B. einer Liste)for i in range(5):
print(i)
for i in range(2, 5):
print(i)
for i in range(10, 3, -1):
print(i)
defdef add(x, y):
z = x + y
return z
add(2, 2)
Man kann auch mehrere Werte zurückgeben:
def divide(x, y):
return x // y, x % y
n, rest = divide(5, 3)
print(n)
print(rest)
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
factorial(4)
importIn Python kann man Programme in einzelne Module portionieren.
Braucht man etwas aus einem anderen Modul, importiert man es:
import math
math.sin(math.pi)
from math import cos, pi
cos(2 * pi)
from math import *
log(e)
import math as m
m.exp(10)
Schauen wir mal, was alles in math definiert wurde:
import math
dir(math)
Einzelne Python-Dateien (Endung .py) kann man als Module benutzten.
Liegt eine Datei test.py im selben Ordner, so kann man import test ausführen.
.pypython2 programm.pyEs folgt ein fertiges Python-Programm.
Speichert es als primes.py ab und startet es aus dem Terminal mit python2 primes.py.
# encoding: utf-8
from __future__ import (print_function,
division,
unicode_literals,
absolute_import)
def primes(max_num):
# Es werden nur Primzahlen kleiner max_num berechnet
is_prime = max_num * [True]
is_prime[0] = False
is_prime[1] = False
primes = []
# Sieb von Erathosthenes:
for i in range(2, max_num):
if is_prime[i]:
for j in range(2 * i, max_num, i):
# Alle Vielfachen sind keine Primzahl
is_prime[j] = False
primes.append(i)
return primes
print(primes(100))
Mit \ kann man in Strings besondere Anweisungen setzen:
'\n' -> Zeilenumbruch'\t' -> Tab'\\' -> normales '\'Wenn man viele '\' schreiben muss (z.B. in LaTeX-Code), lohnt es sich diese Funktion auszuschalten:
print(r'\Huge\texttt{Python}')
Oft will man Werte oder andere Strings in einen String einsetzen.
Dafür stellt Python die format()-Methode bereit:
'Erster Wert: {}, Zweiter Wert: {}'.format(42, 0)
Die {}-Markierungen werden durch die Parameter von format() ersetzt.
format() hat viele fortgeschrittene Funktionen:
'Das Ergebnis ist {:.2f}'.format(3.2211421)
Mit Python 3 kann man standardmäßig beliebige Schriftzeichen in Strings verwenden (Umlaute!).
Bei Python 2 muss man eigentlich immer ein 'u' vor einen String setzen, der sie enthalten muss.
Alternativ kann man from __future__ import unicode_literals verwenden.
print(u'Hällo Wörld')
print('Hällo Wörld') # wir haben unicode_literals importiert