Kapitel 1. Ein Geschmack von Py

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Nur hässliche Sprachen werden populär. Python ist die einzige Ausnahme.

Don Knuth

Geheimnisse

Beginnen wir mit zwei Mini-Rätseln und ihren Lösungen. Was denkst du, bedeuten die folgenden zwei Zeilen?

(Row 1): (RS) K18,ssk,k1,turn work.
(Row 2): (WS) Sl 1 pwise,p5,p2tog,p1,turn.

Es sieht technisch aus, wie eine Art Computerprogramm. In Wirklichkeit ist es ein Strickmuster, genauer gesagt, ein Fragment, das beschreibt, wie man die Ferse einer Socke dreht, wie in Abbildung 1-1.

socks
Abbildung 1-1. Gestrickte Socken

Für mich macht das so viel Sinn wie ein Sudoku-Rätsel für eine meiner Katzen, aber meine Frau versteht es perfekt. Wenn du strickst, tust du das auch.

Versuchen wir es mit einem weiteren geheimnisvollen Text, der auf einer Karteikarte steht. Du wirst seinen Zweck sofort erkennen, auch wenn du sein Endprodukt vielleicht nicht kennst:

  1/2 c. butter or margarine
  1/2 c. cream
  2 1/2 c. flour
  1 t. salt
  1 T. sugar
  4 c. riced potatoes (cold)

Be sure all ingredients are cold before adding flour.
Mix all ingredients.
Knead thoroughly.
Form into 20 balls.  Store cold until the next step.
For each ball:
  Spread flour on cloth.
  Roll ball into a circle with a grooved rolling pin.
  Fry on griddle until brown spots appear.
  Turn over and fry other side.

Auch wenn du nicht kochst, hast du wahrscheinlich erkannt, dass es sich um einRezept handelt.1Es ist eine Liste von Zutaten, gefolgt von einer Zubereitungsanleitung. Aber was wird daraus gemacht? Es ist Lefse, eine norwegische Delikatesse, die einer Tortilla ähnelt(Abbildung 1-2). Bestreiche sie mit Butter und Marmelade oder was immer du magst, rolle sie auf und genieße sie.

lefse
Abbildung 1-2. Lefse

Das Strickmuster und das Rezept haben einige Gemeinsamkeiten:

  • Ein regelmäßiges Vokabular von Wörtern, Abkürzungen und Symbolen, von denen einige vertraut sind, andere wiederum rätselhaft.

  • Regeln darüber, was gesagt werden kann und wo- Syntax.

  • Eine Folge von Vorgängen, die in der richtigen Reihenfolge ausgeführt werden.

  • Manchmal auch eine Wiederholung bestimmter Vorgänge (eine Schleife), wie z.B. die Methode, jedes Stück Lefse zu braten.

  • Manchmal auch ein Verweis auf eine andere Abfolge von Operationen (im Computerjargon: eine Funktion). In einem Rezept musst du vielleicht auf ein anderes Rezept für Reibekuchen verweisen.

  • Vorausgesetztes Wissen über den Kontext. Das Rezept setzt voraus, dass du weißt, was Wasser ist und wie man es kocht. Das Strickmuster setzt voraus, dass du stricken und stricken kannst, ohne dich zu oft zu verletzen.

  • Einige Daten, die verwendet, erstellt oder verändert werden sollen - Kartoffeln und Garn.

  • Die Werkzeuge, die für die Arbeit mit den Daten verwendet werden - Töpfe, Mixer, Öfen, Strickstöcke.

  • Ein erwartetes Ergebnis. In unseren Beispielen: etwas für deine Füße und etwas für deinen Magen. Verwechsle sie nur nicht.

Wie auch immer du sie nennst - Idiome, Jargon, kleine Sprachen - du siehst überall Beispiele dafür. Der Jargon spart denjenigen, die ihn kennen, Zeit, während er den Rest von uns verwirrt. Versuche, eine Zeitungskolumne über Bridge zu entziffern, wenn du das Spiel nicht spielst, oder eine wissenschaftliche Abhandlung, wenn du kein Wissenschaftler bist (oder selbst wenn du es bist, aber in einem anderen Bereich).

Kleine Programme

All diese Ideen findest du in Computerprogrammen, die ihrerseits wie kleine Sprachen sind, in denen der Mensch dem Computer sagt, was er zu tun hat. Ich habe das Strickmuster und das Rezept benutzt, um zu zeigen, dass Programmieren gar nicht so geheimnisvoll ist. Es geht hauptsächlich darum, die richtigen Wörter und Regeln zu lernen.

Es hilft sehr, wenn es nicht zu viele Wörter und Regeln gibt und du nicht zu viele auf einmal lernen musst. Unser Gehirn kann nur so viel auf einmal aufnehmen.

Sehen wir uns nun ein echtes Computerprogramm an(Beispiel 1-1). Was glaubst du, was es macht?

Beispiel 1-1. countdown.py
for countdown in 5, 4, 3, 2, 1, "hey!":
    print(countdown)

Wenn du erraten hast, dass es ein Python-Programm ist, das die Zeilen ausgibt

5
4
3
2
1
hey!

dann weißt du, dass Python einfacher zu lernen ist als ein Rezept oder ein Strickmuster. Und du kannst das Schreiben von Python-Programmen bequem und sicher von deinem Schreibtisch aus üben, weit weg von heißem Wasser und spitzen Stöcken.

Das Python-Programm hat einige spezielle Wörter und Symbole -for, in, print, Kommas, Doppelpunkte, Klammern usw. - die wichtige Teile der Syntax (Regeln) der Sprache sind. Die gute Nachricht ist, dass Python eine schönere Syntax hat und man sich weniger davon merken muss als die meisten Computersprachen. Sie wirkt natürlicher - fast wie ein Rezept.

Beispiel 1-2 ist ein weiteres kleines Python-Programm; es wählt einen Harry-Potter-Zauberspruch aus einer Python-Listeaus und gibt ihn aus.

Beispiel 1-2. spells.py
spells = [
    "Riddikulus!",
    "Wingardium Leviosa!",
    "Avada Kedavra!",
    "Expecto Patronum!",
    "Nox!",
    "Lumos!",
    ]
print(spells[3])

Die einzelnen Zaubersprüche sind Python-Strings(Abfolgen von Textzeichen, die in Anführungszeichen eingeschlossen sind). Sie werden durch Kommas getrennt und in eine Python-Liste eingeschlossen, die durch eckige Klammern ([ und ]) definiert ist. Das Wort spells ist eine Variable, die der Liste einen Namen gibt, damit wir etwas damit machen können. In diesem Fall würde das Programm den vierten Zauberspruch ausgeben:

Expecto Patronum!

Warum haben wir 3 gesagt, wenn wir den vierten Wert haben wollten?Eine Python-Liste wie spells ist eine Folge von Werten, auf die durch ihren Offset vom Anfang der Liste zugegriffen wird. Der erste Wert steht am Offset 0, der vierte Wert am Offset 3.

Hinweis

Menschen zählen von 1 an, also könnte es seltsam erscheinen, von 0 an zu zählen. Es hilft, in Form von Offsets statt in Positionen zu denken. Ja, das ist ein Beispiel dafür, wie sich Computerprogramme manchmal vom allgemeinen Sprachgebrauch unterscheiden.

Listen sind sehr verbreitete Datenstrukturen in Python, und Kapitel 7 zeigt, wie man sie benutzt.

Das Programm in Beispiel 1-3 gibt ein Zitat von einem der Three Stooges aus, aber mit einem Verweis darauf, wer es gesagt hat, und nicht auf seine Position in einer Liste.

Beispiel 1-3. quotes.py
quotes = {
    "Moe": "A wise guy, huh?",
    "Larry": "Ow!",
    "Curly": "Nyuk nyuk!",
    }
stooge = "Curly"
print(stooge, "says:", quotes[stooge])

Wenn du dieses kleine Programm ausführen würdest, würde es Folgendes ausgeben:

Curly says: Nyuk nyuk!

quotes ist eine Variable, die ein Python-Wörterbuchbenennt - eineSammlung von eindeutigen Schlüsseln(in diesem Beispiel der Name des Stooge) und zugehörigen Werten(hier ein bemerkenswerter Spruch dieses Stooge). Mit einem Wörterbuch kannst du Dinge nach Namen speichern und nachschlagen, was oft eine nützliche Alternative zu einer Liste ist.

Das Beispiel spells verwendet eckige Klammern ([ und ]), um eine Python-Liste zu erstellen, und das Beispiel quotes verwendet geschweifte Klammern ({ und }, die nichts mit Curly zu tun haben), um ein Python-Wörterbuch zu erstellen. Außerdem wird ein Doppelpunkt (:) verwendet, um jeden Schlüssel im Wörterbuch mit seinem Wert zu verknüpfen. In Kapitel 8 kannst du mehr über Wörterbücher lesen.

Ich hoffe, das war nicht zu viel Syntax auf einmal. In den nächsten Kapiteln wirst du mehr von diesen kleinen Regeln kennenlernen, ein bisschen nach dem anderen.

Ein größeres Programm

Und nun zu etwas ganz anderem:Beispiel 1-4 zeigt ein Python-Programm, das eine komplexere Reihe von Aufgaben ausführt. Erwarte nicht, dass du schon verstehst, wie das Programm funktioniert; dafür ist dieses Buch da! Es soll dich in das Aussehen und die Funktionsweise eines typischen, nicht trivialen Python-Programms einführen. Wenn du andere Computersprachen kennst, kannst du herausfinden, wie Python im Vergleich dazu aussieht. Auch wenn du Python noch nicht kennst, kannst du ungefähr herausfinden, was jede Zeile tut, bevor du die Erklärung nach dem Programm liest? Du hast bereits Beispiele für eine Python-Liste und ein Wörterbuch gesehen, und hier kommen noch ein paar weitere Funktionen hinzu.

In früheren Ausgaben dieses Buches hat sich das Beispielprogramm mit einer YouTube-Website verbunden und Informationen über die am besten bewerteten Videos abgerufen, z. B. "Charlie Bit My Finger". Das hat gut funktioniert, bis kurz nachdem die Tinte für die zweite Auflage trocken war. Dann hat Google die Unterstützung für diesen Dienst eingestellt und das Beispielprogramm funktionierte nicht mehr. Unser neues Beispiel 1-4 führt zu einer anderen Seite, die länger bestehen sollte - die Wayback Machine im Internet Archive, ein kostenloser Dienst, der seit 20 Jahren Milliarden von Webseiten (und Filme, Fernsehsendungen, Musik, Spiele und andere digitale Artefakte) gespeichert hat. Weitere Beispiele für solche Web-APIs findest du in Kapitel 18.

Das Programm bittet dich, eine URL und ein Datum einzugeben. Dann fragt es die Wayback Machine, ob sie eine Kopie dieser Website um dieses Datum herum hat. Wenn sie eine gefunden hat, gibt sie die Information an dieses Python-Programm zurück, das die URL ausgibt und sie in deinem Webbrowser anzeigt. Es geht darum zu zeigen, wie Python eine Vielzahl von Aufgaben bewältigt - deine Eingaben entgegennimmt, über das Internet zu einer Website kommuniziert, einen Inhalt zurückbekommt, eine URL daraus extrahiert und deinen Webbrowser davon überzeugt, diese URL anzuzeigen.

Wenn wir eine normale Webseite mit HTML-formatiertem Text zurückbekommen würden, müssten wir herausfinden, wie wir sie anzeigen können, was eine Menge Arbeit ist, die wir gerne den Webbrowsern überlassen. Wir könnten auch versuchen, die Teile zu extrahieren, die wir haben wollen (siehe mehr Details über Web Scraping in Kapitel 18). Beide Möglichkeiten würden mehr Arbeit und ein größeres Programm bedeuten. Stattdessen gibt die Wayback Machine Daten im JSON-Format zurück.JSON (JavaScript Object Notation) ist ein für Menschen lesbares Textformat, das die Typen, Werte und die Reihenfolge der darin enthaltenen Daten beschreibt. Es ist eine weitere kleine Sprache und hat sich zu einer beliebten Methode entwickelt, um Daten zwischen verschiedenen Computersprachen und -systemen auszutauschen. In Kapitel 12 erfährst du mehr über JSON.

Python-Programme können JSON-Text inPython-Datenstrukturenübersetzen, diedu in den nächsten Kapiteln kennenlernen wirst - so als hättest du selbst ein Programm geschrieben, um sie zu erstellen. Unser kleines Programm wählt nur einen Teil aus (die URL der alten Seite aus dem Internet Archive). Auch hier handelt es sich um ein komplettes Python-Programm, das du selbst ausführen kannst. Wir haben nur eine kleine Fehlerprüfung eingebaut, um das Beispiel kurz zu halten. Die Zeilennummern sind nicht Teil des Programms; sie helfen dir, der Beschreibung zu folgen, die wir nach dem Programm einfügen.

Beispiel 1-4. archive.py
1 import webbrowser
2 import json
3 from urllib.request import urlopen
4 
5 print("Let's find an old website.")
6 site = input("Type a website URL: ")
7 era = input("Type a year, month, and day, like 20150613: ")
8 url = "http://archive.org/wayback/available?url=%s&timestamp=%s" % (site, era)
9 response = urlopen(url)
10 contents = response.read()
11 text = contents.decode("utf-8")
12 data = json.loads(text)
13 try:
14     old_site = data["archived_snapshots"]["closest"]["url"]
15     print("Found this copy: ", old_site)
16     print("It should appear in your browser now.")
17     webbrowser.open(old_site)
18 except:
19     print("Sorry, no luck finding", site)

Dieses kleine Python-Programm hat in ein paar überschaubaren Zeilen viel geleistet. Du kennst noch nicht alle diese Begriffe, aber das wirst du in den nächsten Kapiteln. Hier ist, was in jeder Zeile passiert:

  1. Importiere den gesamten Code des Moduls webbrowser aus der Python-Standardbibliothek (mache ihn für dieses Programm verfügbar).

  2. Importiere den gesamten Code aus dem Modul der Python-Standardbibliothek namens json.

  3. Importiere nur die Funktion urlopen aus dem Modul urllib.request der Standardbibliothek.

  4. Eine leere Zeile, denn wir wollen uns nicht eingeengt fühlen.

  5. Drucke einen ersten Text auf dein Display.

  6. Drucke eine Frage zu einer URL aus, lies, was du eintippst, und speichere es in einer Programmvariablen namens site.

  7. Drucke eine weitere Frage aus, diesmal mit Jahr, Monat und Tag, und speichere sie in einer Variablen namens era.

  8. Erstelle eine String-Variable namens url, damit die Wayback Machine ihre Kopie der Seite und des Datums, die du eingegeben hast, nachschlägt.

  9. Verbinde dich mit dem Webserver unter dieser URL und fordere einen bestimmten Webservice an.

  10. Erhalte die Antwortdaten und weise sie der Variablen contents zu.

  11. Dekodiere contents in einen Textstring im JSON-Format und weise ihn der Variablen text zu.

  12. Konvertiere text in data-Python-Datenstrukturen.

  13. Fehlerkontrolle: try führt die nächsten vier Zeilen aus, und wenn eine Zeile fehlschlägt, wird die letzte Zeile des Programms (nach except) ausgeführt.

  14. Wenn wir einen Treffer für diesen Ort und das Datum zurückbekommen haben, extrahieren wir den Wert aus einem dreistufigen Python-Wörterbuch. Beachte, dass diese und die nächsten beiden Zeilen eingerückt sind. So weiß Python, dass sie zu der vorangegangenen Zeile try gehören.

  15. Drucke die URL aus, die wir gefunden haben.

  16. Gib aus, was nach der Ausführung der nächsten Zeile passiert.

  17. Zeige die URL, die wir gefunden haben, in deinem Webbrowser an.

  18. Wenn in den vorherigen vier Zeilen etwas fehlgeschlagen ist, springt Python bis hierher.

  19. Wenn es fehlgeschlagen ist, geben wir eine Meldung und die gesuchte Seite aus. Diese Zeile ist eingerückt, weil sie nur ausgeführt werden sollte, wenn die vorangehende Zeile except läuft.

Als ich dies in einem Terminalfenster ausführte, gab ich eine Website-URL und ein Datum ein und erhielt diese Textausgabe:

$ python archive.py
Let's find an old website.
Type a website URL: lolcats.com
Type a year, month, and day, like 20150613: 20151022
Found this copy: http://web.archive.org/web/20151102055938/http://www.lolcats.com/
It should appear in your browser now.

Abbildung 1-3 zeigt, was in meinem Browser erscheint.

inp2 0103
Abbildung 1-3. Von der Wayback Machine

Im vorigen Beispiel haben wir einige Module aus derStandardbibliothek von Python verwendet (Programme, die bei der Installation von Python mitgeliefert werden), aber das ist nichts Heiliges. Python verfügt über eine Fülle hervorragender Software von Drittanbietern.Beispiel 1-5 ist ein Rewrite, der mit einem externen Python-Softwarepaket namens requests auf die Website des Internet Archive zugreift.

Beispiel 1-5. archive2.py
1 import webbrowser
2 import requests
3 
4 print("Let's find an old website.")
5 site = input("Type a website URL: ")
6 era = input("Type a year, month, and day, like 20150613: ")
7 url = "http://archive.org/wayback/available?url=%s&timestamp=%s" % (site, era)
8 response = requests.get(url)
9 data = response.json()
10 try:
11     old_site = data["archived_snapshots"]["closest"]["url"]
12     print("Found this copy: ", old_site)
13     print("It should appear in your browser now.")
14     webbrowser.open(old_site)
15 except:
16     print("Sorry, no luck finding", site)

Die neue Version ist kürzer und vermutlich für die meisten Leute besser lesbar. Mehr über requests erfährst du in Kapitel 18, und über extern erstellte Python-Software im Allgemeinen in Kapitel 11.

Python in der realen Welt

Lohnt es sich also, Python zu lernen? Python gibt es seit 1991 (älter als Java, jünger als C) und gehört zu den fünf beliebtesten Programmiersprachen. Menschen werden dafür bezahlt, Python-Programme zu schreiben - seriöse Programme, die du jeden Tag benutzt, wie Google, YouTube, Instagram, Netflix und Hulu. Ich habe Python für Produktionsanwendungen in vielen Bereichen eingesetzt. Python hat den Ruf, sehr produktiv zu sein, was für schnelllebige Unternehmen attraktiv ist.

Du findest Python in vielen Computerumgebungen, auch in diesen:

  • Die Befehlszeile in einem Monitor- oder Terminalfenster

  • Grafische Benutzeroberflächen (GUIs), einschließlich des Webs

  • Das Web, auf der Client- und Serverseite

  • Backend-Server für große, beliebte Websites

  • Die Cloud (von Dritten verwaltete Server)

  • Mobile Geräte

  • Eingebettete Geräte

Python-Programme reichen von einzelnen Skripten - wiedie, die du bisher in diesem Kapitel gesehen hast - bis hin zu Systemen mit Millionen von Zeilen.

Die Python Developers' Survey 2018enthält Zahlen und Grafiken zur aktuellen Stellung von Python in der Computerwelt.

In den letzten Kapiteln geht es um den Einsatz von Python in der Kunst, der Wissenschaft und der Wirtschaft.

Python gegen die Sprache vom Planeten X

Wie schneidet Python im Vergleich zu anderen Sprachen ab? Wo und wann würdest du eine Sprache der anderen vorziehen? In diesem Abschnitt zeige ich Codebeispiele aus anderen Sprachen, damit du siehst, wie die Konkurrenz aussieht. Es wird nicht erwartet, dass du diese Beispiele verstehst, wenn du noch nicht mit ihnen gearbeitet hast. (Wenn du zum letzten Python-Beispiel kommst, bist du vielleicht erleichtert, dass du nicht mit einigen der anderen Sprachen arbeiten musstest).

Jedes Programm soll eine Zahl ausdrucken und ein wenig über die Sprache sagen.

Wenn du ein Terminal oder Terminalfenster verwendest, wird das Programm, das deine Eingaben liest, ausführt und die Ergebnisse anzeigt, Shell-Programm genannt.Die Windows-Shell heißtcmdSie führt Batch-Dateien mit dem Suffix .bat aus.Linux und andere Unix-ähnliche Systeme (einschließlich macOS) haben viele Shell-Programme. Das beliebteste heißtbash oder sh. Die Shell hat einfache Fähigkeiten, wie z. B. einfache Logik und das Expandieren von Platzhaltersymbolen wie* in Dateinamen. Du kannst Befehle in Dateien speichern, dieShell-Skripte genannt werden, und sie später ausführen. Das Problem ist, dass Shell-Skripte nicht über ein paar hundert Zeilen hinausgehen und viel langsamer sind als die alternativen Sprachen. Der nächste Ausschnitt zeigt ein kleines Shell-Programm:

#!/bin/sh
language=0
echo "Language $language: I am the shell. So there."

Wenn du dies in einer Datei als test.shgespeichert und mit sh test.sh ausgeführt hättest, würdest du folgendes auf deinem Display sehen:

Language 0: I am the shell. So there.

Die alten HaudegenCundC++sind relativ einfache Sprachen, die verwendet werden, wenn Geschwindigkeit am wichtigsten ist. Dein Betriebssystem und viele seiner Programme (einschließlich des Programms python auf deinem Computer) sind wahrscheinlich in C oder C++ geschrieben.

Diese beiden sind schwieriger zu erlernen und zu warten. Du musst viele Details wie dieSpeicherverwaltung im Auge behalten, was zu Programmabstürzen und Problemen führen kann, die schwer zu diagnostizieren sind. Hier ist ein kleines C-Programm:

#include <stdio.h>
int main(int argc, char *argv[]) {
    int language = 1;
    printf("Language %d: I am C! See? Si!\n", language);
    return 0;
}

C++ ähnelt der C-Familie, hat aber einige besondere Merkmale entwickelt:

#include <iostream>
using namespace std;
int main() {
    int language = 2;
    cout << "Language " << language << \
       ": I am C++!  Pay no attention to my little brother!" << \
       endl;
    return(0);
}

JavaundC#sind Nachfolger von C und C++, die einige der Probleme ihrer Vorgänger vermeiden - vor allem die Speicherverwaltung -, aber sie können etwas langatmig sein. Das folgende Beispiel zeigt einige Java:

public class Anecdote {
    public static void main (String[] args) {
        int language = 3;
        System.out.format("Language %d: I am Java! So there!\n", language);
    }
}

Wenn du noch nie ein Programm in einer dieser Sprachen geschrieben hast, fragst du dich vielleicht: Was ist das alles? Wir wollten doch nur eine einfache Zeile ausdrucken. Einige Sprachen haben einen großen syntaktischen Ballast, über den du in Kapitel 2 mehr erfährst.

C, C++ und Java sind Beispiele fürstatische Sprachen. Sie erfordern, dass du einige Details auf niedriger Ebene festlegst, wie z. B. Datentypen für den Computer.Anhang A zeigt, dass ein Datentyp wie eine ganze Zahl eine bestimmte Anzahl von Bits in deinem Computer hat und nur ganzzahlige Dinge tun kann.Im Gegensatz dazu musst du bei dynamischen Sprachen(auch Skriptsprachen genannt) keine Variablentypen deklarieren, bevor du sie verwenden kannst.

Perl war viele Jahre lang die dynamische Allzwecksprache. Perl ist sehr mächtig und verfügt über umfangreiche Bibliotheken. Allerdings kann die Syntax umständlich sein, und die Sprache scheint in den letzten Jahren gegenüber Python und Ruby an Schwung verloren zu haben. Dieses Beispiel erfreut dich mit einem Perl-Bonmot:

my $language = 4;
print "Language $language: I am Perl, the camel of languages.\n";

Rubyist eine neuere Sprache, die ein wenig an Perl angelehnt ist und vor allem wegen Ruby on Rails, einem Webentwicklungs-Framework, populär ist. Sie wird in vielen Bereichen wie Python verwendet, und die Entscheidung für die eine oder andere Sprache kann eine Frage des Geschmacks oder der verfügbaren Bibliotheken für deine spezielle Anwendung sein. Hier ist ein Ruby-Snippet:

language = 5
puts "Language #{language}: I am Ruby, ready and aglow."

PHP, das du im folgenden Beispiel sehen kannst, ist bei der Webentwicklung sehr beliebt, weil es die Kombination von HTML und Code erleichtert. Allerdings hat die PHP-Sprache selbst einige Tücken, und PHP hat sich außerhalb des Webs nicht als allgemeine Sprache durchgesetzt. So sieht es aus:

<?PHP
$language = 6;
echo "Language $language: I am PHP, a language and palindrome.\n";
?>

Go(oder Golang, wenn du versuchst, es zu googeln) ist eine neue Sprache, die versucht, sowohl effizient als auch freundlich zu sein:

package main

import "fmt"

func main() {
  language := 7
  fmt.Printf("Language %d: Hey, ho, let's Go!\n", language)
}

Eine weitere moderne Alternative zu C und C++ istRust:

fn main() {
    println!("Language {}: Rust here!", 8)

Wer ist noch übrig? Ach ja, Python:

language = 9
print(f"Language {language}: I am Python. What's for supper?")

Warum Python?

Ein Grund, der nicht unbedingt der wichtigste ist, ist die Beliebtheit von Python. Nach verschiedenen Maßstäben ist das so:

  • Dieam schnellsten wachsendegroße Programmiersprache, wie du in Abbildung 1-4 sehen kannst.

  • Die Redakteure desTIOBE-Index Juni 2019 sagen: "Diesen Monat hat Python mit 8,5% wieder ein Allzeithoch im TIOBE-Index erreicht. Wenn Python dieses Tempo beibehalten kann, wird es wahrscheinlich in 3 bis 4 Jahren C und Java ablösen und damit die beliebteste Programmiersprache der Welt werden."

  • Programmiersprache des Jahres 2018 (TIOBE) und Spitzenplatz beiIEEE SpectrumundPyPL.

  • Die beliebteste Sprache für Einführungskurse in Informatik an den bestenamerikanischen Colleges.

  • Die offizielle Unterrichtssprache für Gymnasien in Frankreich.

inp2 0104
Abbildung 1-4. Python führt beim Wachstum der wichtigsten Programmiersprachen

In letzter Zeit ist Python in der Welt der Datenwissenschaft und des maschinellen Lernens sehr populär geworden. Wenn du einen gut bezahlten Programmierjob in einem interessanten Bereich finden willst, ist Python eine gute Wahl. Und wenn du neue Mitarbeiter/innen suchst, gibt es einen wachsenden Pool an erfahrenen Python-Entwickler/innen.

Aber warum ist sie so beliebt? Programmiersprachen strahlen nicht gerade Charisma aus. Was sind die Gründe dafür?

Python ist eine gute Allzweck-Hochsprache. Ihr Design macht sie sehr lesbar, was wichtiger ist, als es klingt. Jedes Computerprogramm wird nur einmal geschrieben, aber viele Male gelesen und überarbeitet, oft von vielen Menschen. Die Lesbarkeit macht es auch einfacher zu lernen und sich zu erinnern; daher ist es leichter zu schreiben. Im Vergleich zu anderen beliebten Sprachen hat Python eine sanfte Lernkurve, die dich schneller produktiv macht, aber dennoch hat sie Tiefen, die du erforschen kannst, wenn du Erfahrung hast.

Die relative Kürze von Python ermöglicht es dir, Programme zu schreiben, die kleiner sind als ihre Pendants in einer statischen Sprache. Studien haben gezeigt, dass Programmierer dazu neigen, ungefähr die gleiche Anzahl von Codezeilen pro Tag zu produzieren - unabhängig von der Sprache. Python ist die Geheimwaffe vieler Unternehmen, die dies für wichtig halten.

Und natürlich ist Python frei, wie Bier (Preis) und Sprache (Freiheit). Du kannst mit Python schreiben, was du willst, und es überall frei verwenden. Niemand kann dein Python-Programm lesen und sagen: "Das ist ein nettes kleines Programm, das du da hast. Es wäre schade, wenn ihm etwas zustoßen würde."

Python läuft fast überall und hat eine ganze Menge nützlicher Software in seiner Standardbibliothek. Dieses Buch enthält viele Beispiele für die Standardbibliothek und nützlichen Python-Code von Drittanbietern.

Aber vielleicht ist der beste Grund, Python zu benutzen, ein unerwarteter: Die Leute haben im Allgemeinen Spaß am Programmieren mit Python und sehen es nicht als notwendiges Übel an, um Dinge zu erledigen. Es ist nicht im Weg. Ein bekanntes Zitat ist, dass es "in dein Gehirn passt". Oft werden Entwickler sagen, dass sie einige Python-Designs vermissen, wenn sie in einer anderen Sprache arbeiten müssen. Und das unterscheidet Python von den meisten seiner Konkurrenten.

Warum nicht Python?

Python ist nicht die beste Sprache für jede Situation.

Anhang B zeigt dir, wie du Python installierst, wenn du es noch nicht auf deinem Computer hast.

Für die meisten Anwendungen ist es schnell genug, aber für einige der anspruchsvolleren möglicherweise nicht. Wenn dein Programm die meiste Zeit mit Berechnungen verbringt (der Fachausdruck dafür ist CPU-gebunden), wird ein in C, C++, C#, Java, Rust oder Go geschriebenes Programm in der Regel schneller laufen als sein Python-Pendant. Aber nicht immer!

Hier sind einige Lösungen:

  • Manchmal schlägt ein besserer Algorithmus (eine schrittweise Lösung) in Python einen ineffizienten Algorithmus in C. Die höhere Entwicklungsgeschwindigkeit in Python gibt dir mehr Zeit, mit Alternativen zu experimentieren.

  • In vielen Anwendungen (vor allem im Web) dreht ein Programm seine Däumchen, während es auf eine Antwort von einem Server im Netzwerk wartet. Die CPU (Central Processing Unit, der Computerchip, der alle Berechnungen durchführt) ist kaum beteiligt; folglich sind die End-to-End-Zeiten zwischen statischen und dynamischen Programmen sehr ähnlich.

  • Der Standard-Python-Interpreter ist in C geschrieben und kann mit C-Code erweitert werden. Darauf gehe ich in Kapitel 19 ein wenig ein.

  • Die Interpreter von Python werden immer schneller. Java war in seinen Anfängen furchtbar langsam und es wurde viel Forschung und Geld investiert, um es zu beschleunigen. Python ist nicht im Besitz eines Unternehmens, daher wurden die Verbesserungen schrittweise vorgenommen. In "PyPy" spreche ich über das PyPy-Projekt und seine Auswirkungen.

  • Vielleicht hast du eine extrem anspruchsvolle Anwendung, und egal, was du tust, Python erfüllt deine Anforderungen nicht. Die üblichen Alternativen sind C, C++ und Java.Go(das sich wie Python anfühlt, aber wie C funktioniert) oder Rust könnten auch einen Blick wert sein.

Python 2 vs. Python 3

Eine mittelschwere Komplikation ist, dass es zwei Versionen von Python gibt. Python 2 gibt es schon ewig und ist auf Linux- und Apple-Computern vorinstalliert. Es ist eine ausgezeichnete Sprache, aber nichts ist perfekt. In Computersprachen, wie in vielen anderen Bereichen, sind einige Fehler kosmetisch und leicht zu beheben, während andere schwer zu beheben sind. Harte Korrekturen sind inkompatibel: Neue Programme, die mit ihnen geschrieben wurden, funktionieren nicht auf dem alten Python-System und alte Programme, die vor der Korrektur geschrieben wurden, funktionieren nicht auf dem neuen System.

Der Schöpfer von Python(Guido van Rossum) und andere beschlossen, die schwerwiegenden Fehlerbehebungen zu bündeln, und stellten sie 2008 als Python 3 vor. Python 2 ist die Vergangenheit und Python 3 die Zukunft. Die letzte Version von Python 2 ist 2.7, die es noch eine Weile geben wird, aber das ist das Ende der Fahnenstange; Python 2.8 wird es nicht geben. Die Sprachversion von Python 2 wird im Januar 2020 eingestellt. Sicherheits- und andere Fehlerbehebungen werden nicht mehr vorgenommen, und viele bekannte Python-Pakete werdendie Unterstützungfür Python 2 bis dahineinstellen. Die Betriebssysteme werden Python 2 bald entweder abschaffen oder Python 3 zu ihrem neuen Standard machen. Die Umstellung beliebter Python-Software auf Python 3 erfolgte schrittweise, aber der Wendepunkt ist nun überschritten. Alle neuen Entwicklungen werden in Python 3 erfolgen.

In diesem Buch geht es um Python 3. Es sieht fast genauso aus wie Python 2. Die offensichtlichste Änderung ist, dass print in Python 3 eine Funktion ist, die du also mit Klammern um ihre Argumente herum aufrufen musst. Die wichtigste Änderung ist die Behandlung von Unicode-Zeichen, die in Kapitel 12 behandelt wird. Ich weise auf andere wichtige Unterschiede hin, sobald sie auftauchen.

Python installieren

Um dieses Kapitel nicht zu überfrachten, findest du die Details zur Installation von Python 3 in Anhang B. Wenn du Python 3 noch nicht hast oder dir nicht sicher bist, kannst du dort nachsehen, was du auf deinem Computer tun musst. Ja, das ist eine nervige Angelegenheit (genauer gesagt, die rechte vordere Seite), aber du musst es nur einmal machen.

Python ausführen

Nachdem du eine funktionierende Kopie von Python 3 installiert hast, kannst du damit die Python-Programme in diesem Buch sowie deinen eigenen Python-Code ausführen. Wie führt man eigentlich ein Python-Programm aus? Es gibt zwei Hauptwege:

  • Der in Python eingebaute interaktive Interpreter(auch Shell genannt) ist der einfachste Weg, um mit kleinen Programmen zu experimentieren. Du gibst die Befehle Zeile für Zeile ein und siehst sofort das Ergebnis. Durch die enge Kopplung zwischen Tippen und Sehen kannst du schneller experimentieren. Ich werde den interaktiven Interpreter benutzen, um die Funktionen der Sprache zu demonstrieren, und du kannst die gleichen Befehle in deiner eigenen Python-Umgebung eingeben.

  • Für alles andere speicherst du deine Python-Programme in Textdateien, normalerweise mit der Erweiterung .py, und führst sie aus, indem du pythongefolgt von den Dateinamen eingibst.

Lass uns jetzt beide Methoden ausprobieren.

Verwendung des interaktiven Dolmetschers

Die meisten Codebeispiele in diesem Buch verwenden den eingebauten interaktiven Interpreter. Wenn du die gleichen Befehle wie in den Beispielen eingibst und die gleichen Ergebnisse erhältst, weißt du, dass du auf dem richtigen Weg bist.

Du startest den Interpreter, indem du einfach den Namen des Python-Hauptprogramms auf deinem Computer eintippst: Er solltepython, python3 oder so ähnlich lauten. Für den Rest dieses Buches gehen wir davon aus, dass es python heißt; wenn dein Programm einen anderen Namen hat, gib ihn ein, wenn du python in einem Codebeispiel siehst.

Der interaktive Interpreter funktioniert fast genauso wie Python mit Dateien, mit einer Ausnahme: Wenn du etwas eintippst, das einen Wert hat, gibt der interaktive Interpreter den Wert automatisch für dich aus. Das ist kein Teil der Sprache Python, sondern nur eine Funktion des Interpreters, damit du nicht ständig print()eingeben musst. Wenn du zum Beispiel Python startest und die Zahl 27 in den Interpreter eintippst, wird sie auf deinem Terminal ausgegeben (wenn du die Zeile 27 in einer Datei hast, regt sich Python zwar nicht auf, aber du siehst nichts gedruckt, wenn du das Programm ausführst):

$ python
Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 27
27
Hinweis

Im vorangegangenen Beispiel ist$ eine beispielhafte Eingabeaufforderung, mit der du einen Befehl wiepythonin das Terminalfenster eingeben kannst. Wir verwenden sie für die Codebeispiele in diesem Buch, obwohl deine Eingabeaufforderung anders aussehen könnte.

Übrigens funktioniertprint() auch innerhalb des Interpreters, wenn du etwas ausdrucken willst:

>>> print(27)
27

Wenn du diese Beispiele mit dem interaktiven Interpreter ausprobiert hast und die gleichen Ergebnisse gesehen hast, hast du gerade einen echten (wenn auch kleinen) Python-Code ausgeführt. In den nächsten Kapiteln wirst du von Einzeilern zu längeren Python-Programmen übergehen.

Python-Dateien verwenden

Wenn du 27 in eine eigene Datei packst und durch Python laufen lässt, läuft es zwar, aber es wird nichts gedruckt. In normalen, nicht interaktiven Python-Programmen musst du die Funktion print aufrufen, um etwas zu drucken:

print(27)

Lass uns eine Python-Programmdatei erstellen und sie ausführen:

  1. Öffne deinen Texteditor.

  2. Gib die Zeile print(27) ein, wie sie hier erscheint.

  3. Speichere sie in einer Datei mit dem Namen test.py. Achte darauf, dass du sie als reinen Text und nicht in einem "Rich"-Format wie RTF oder Word speicherst. Du musst die Endung .py nicht für deine Python-Programmdateien verwenden, aber sie hilft dir, dich an sie zu erinnern.

  4. Wenn du eine grafische Benutzeroberfläche verwendest - und das ist fast jeder - öffne ein Terminalfenster.2

  5. Starte dein Programm, indem du Folgendes eingibst:

$ python test.py

Du solltest eine einzelne Zeile der Ausgabe sehen:

27

Wenn ja, dann gratuliere ich dir zu deinem ersten eigenständigen Python-Programm.

Was kommt als Nächstes?

Du wirst Befehle in ein echtes Python-System eingeben, und die müssen der legalen Python-Syntax folgen. Anstatt dir die Syntaxregeln auf einmal aufzudrängen, gehen wir sie in den nächsten Kapiteln durch.

Die grundlegende Art, Python-Programme zu entwickeln, ist die Verwendung eines Klartext-Editors und eines Terminal-Fensters. In diesem Buch verwende ich Klartext-Darstellungen, die manchmal interaktive Terminal-Sitzungen und manchmal Teile von Python-Dateien zeigen. Du solltest wissen, dass es auch viele guteintegrierte Entwicklungsumgebungen (IDEs) für Python gibt. Diese können GUIs mit fortgeschrittener Textbearbeitung und Hilfe-Anzeigen haben. Du kannst Details zu einigen von ihnen in Kapitel 19 erfahren.

Dein Moment des Zen

Jede Programmiersprache hat ihren eigenen Stil. Im Vorwort habe ich erwähnt, dass es oft einepythonische Art gibt, sich auszudrücken. In Python ist ein freier Vers eingebettet, der die Python-Philosophie auf den Punkt bringt (soweit ich weiß, ist Python die einzige Sprache, die ein solches Osterei enthält). Gib einfach import this in deinen interaktiven Interpreter ein und drücke dann die Eingabetaste, wann immer du diesen Moment des Zen brauchst:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
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.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
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.
Namespaces are one honking great idea--let's do more of those!

Ich werde im Laufe des Buches Beispiele für diese Gefühle anführen.

Kommend

Im nächsten Kapitel geht es um Python-Datentypen und -Variablen. Das bereitet dich auf die folgenden Kapitel vor, in denen die Datentypen und Codestrukturen von Python im Detail behandelt werden.

Dinge zu tun

Dieses Kapitel war eine Einführung in die Sprache Python - was sie kann, wie sie aussieht und wo sie in der Computerwelt hingehört. Am Ende jedes Kapitels schlage ich dir einige Miniprojekte vor, die dir helfen sollen, dich an das Gelesene zu erinnern und dich auf das vorzubereiten, was noch kommen wird.

1.1 Wenn du Python 3 noch nicht auf deinem Computer installiert hast, solltest du das jetzt nachholen. In Anhang B findest du die Details für dein Computersystem.

1.2 Starte den interaktiven Interpreter Python 3. Einzelheiten findest du in Anhang B. Er sollte ein paar Zeilen über sich selbst ausgeben und dann eine einzelne Zeile, die mit >>> beginnt. Das ist deine Eingabeaufforderung, um Python-Befehle einzugeben.

1.3 Spiele ein wenig mit dem Interpreter. Benutze ihn wie einen Taschenrechner und gib Folgendes ein:8 * 9. Drücke die Enter-Taste, um das Ergebnis zu sehen. Python sollte 72 ausgeben.

1.4 Gib die Zahl 47 ein und drücke die Eingabetaste. Wurde 47 in der nächsten Zeile ausgedruckt?

1.5 Gib jetzt print(47) ein und drücke die Eingabetaste. Wurde dir in der nächsten Zeile auch 47 angezeigt?

1 Normalerweise findet man sie nur in Kochbüchern und gemütlichen Krimis.

2 Wenn du dir nicht sicher bist, was das bedeutet, findest du in Anhang B Details zu den verschiedenen Betriebssystemen.

Get Einführung in Python, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.