Überprüfen Sie zunächst die Ratschläge von tgray und Lundström .
Dann einige Dinge, die Sie vielleicht wissen möchten:
Python ist dynamisch typisiert, sodass Sie im Gegensatz zu C # nicht den Typ, sondern das Verhalten überprüfen. Vielleicht möchten Sie über das Tippen von Enten googeln. Dies bedeutet, dass Sie sich nicht mit Boxen und Unboxing befassen müssen.
Python ist vollständig objektorientiert, aber die Syntax erzwingt dieses Paradigma nicht. Sie können Python schreiben, ohne das Wort "Klasse" zu verwenden.
Die in Python enthaltene GUI-Bibliothek kann nicht mit C # verglichen werden. Überprüfen Sie die PyQt- , GTK- oder wxPython- Bibliotheken.
Python hat viele Konzepte, mit denen Sie möglicherweise nicht vertraut sind: Listenverständnisse, Generatoren ("Ausbeute" existiert in C #, wird aber nicht häufig verwendet), Dekoratoren, Metaklassen usw. Haben Sie keine Angst; Sie können in Python ohne sie programmieren. Sie sind nur intelligente Werkzeuge, nicht obligatorisch.
Wie in C # ist die Python-Standardbibliothek riesig. Schauen Sie immer darauf, wenn Sie auf ein Problem stoßen. Es ist sehr wahrscheinlich, dass jemand es bereits gelöst hat.
Python verwendet LATE-Bindung und Variablenbeschriftungen. Es ist viel zu früh für jemanden, der mit der Sprache beginnt, sich darüber Gedanken zu machen, aber denken Sie daran, dass Sie eines Tages auf ein Verhalten mit Variablen stoßen werden, das unlogisch erscheint, und das müssen Sie überprüfen. Für den Moment:
Denken Sie daran, niemals Folgendes zu tun:
def myfunc(my_list=[]) :
Stattdessen:
def myfunc(my_list=()) :
my_list = list(my_list)
Und du wirst gut sein. Dafür gibt es einen guten Grund, aber darum geht es nicht :-)
Python ist plattformübergreifend, schreibt gerne auf Mac und läuft auf Wunsch unter Linux.
Python wird nicht mit einer komplexen IDE geliefert (Sie haben IDLE :-)). Wenn Sie Visual Studio-süchtig sind, überprüfen Sie Glade . Dies ist nicht so fortgeschritten wie Visual Studio, aber es ist immer noch ein gutes RAD .
Wenn Sie eine Webanwendung in Python entwickeln möchten, denken Sie daran, dass Python nicht .NET ist. Sie müssen ein Webframework hinzufügen, wenn Sie vergleichen möchten. Ich mag Django .
Python benötigt keine große IDE, um damit zu arbeiten. SciTE ,
Notepad ++ , IDLE , Kate , gedit ... Leichte Editoren sind wirklich ausreichend.
Python erzwingt das Einrücken mit Leerzeichen und Zeilenumbrüchen. Das können Sie nicht ändern. Sie sollten die Verwendung von Registerkarten zum Einrücken vermeiden und stattdessen Leerzeichen auswählen. Das Äquivalent zu leeren Armbändern {} ist das Schlüsselwort "pass".
Python erzwingt keine privaten Variablen. Sie können eine private Variable mit "__" (zwei Unterstriche) am Anfang des Variablennamens definieren, sie ist jedoch auf schwierige Weise umgangen. Python geht normalerweise davon aus, dass Programmierer erwachsen sind, die wissen, was sie tun und kommunizieren.
Python verwendet die Iteration. Viel. Viel viel. Und so ist das itertools-Modul Ihr bester Freund.
Python hat keine eingebauten Delegaten. Das Delegatenmodul ist nicht das, was Sie denken. Verwenden Sie für die ereignisgesteuerte Programmierung eine GUI-Bibliothek (oder codieren Sie das Muster selbst, es ist nicht so schwierig).
Python hat einen Interpreter: Sie können fast alles live testen. Es sollte immer neben Ihrem Texteditor ausgeführt werden. Python Basic Interpreter ist nicht viel, versuchen Sie IPython
für etwas Leckeres.
Python ist automatisch dokumentiert: Verwenden Sie docstrings in Ihrem eigenen Code und konsultieren Sie andere mithilfe von "help ()" im Python-Interpreter
Modulgrundlagen:
- sys: Systemfunktionen bearbeiten
- os: Anmeldeinformationen festlegen, Dateipfade bearbeiten, umbenennen, rekursiven Dateispaziergang usw.
- shutil: Batch-Dateiverarbeitung (z. B. rekursives Löschen)
- re: regexp
- urllib und urllib2: HTTP-Skripte wie Herunterladen, Veröffentlichen / Abrufen von Anfragen usw.
- Datum / Uhrzeit: Datum, Uhrzeit UND DAUER bearbeiten
- Thread: Sie raten es
- zlib: Komprimierung
- pickle: Serialisierung
- xml: XML mit SAX oder DOM analysieren / schreiben
Es gibt Hunderte von Modulen. Genießen.
Einige typische Methoden, um Dinge in Python zu tun:
Schleifen:
Python-Codierer verwenden massiv das Äquivalent der foreachC # -Schleife und ziehen es anderen vor:
Grundlegende Iterationen:
for item in collection:
print str(item)
"Sammlung" kann eine Zeichenfolge, eine Liste, ein Tupel sein ... Beliebig iterierbar: Jedes Objekt, das die .next () -Methode definiert. Es gibt viele iterable in Python. Beispiel: Eine typische Python-Sprache zum Lesen von Dateien:
for line in open("/path/to/file") :
print line
Eine Verknüpfung zur for-Schleife wird als "Listenverständnis" bezeichnet. Es ist eine Möglichkeit, eine neue Iterable in einer Zeile zu erstellen:
Erstellen einer gefilterten Liste mit Listenverständnis:
my_list = [item for item in collection if condition]
Erstellen einer neuen Liste mit Listenverständnis:
my_list = [int(item) * 3 for item in collection]
Erstellen eines neuen Generators mit Listenverständnis:
my_list = (int(item) * 3 for item in collection)
Wie oben, aber die Werte werden sofort bei der ersten Iteration generiert und gehen dann verloren. Weitere Informationen dazu hier .
Gewöhnlich für Schleife
Wenn Sie eine übliche for-Schleife ausdrücken möchten, können Sie die Funktion xrange () verwenden. for (int i = 0; i < 5; i++)wird:
for i in xrange(0,5) :
tun, während gleichwertig
In Python gibt es kein "Do While". Ich habe es nie verpasst, aber wenn Sie diese Logik verwenden müssen, gehen Sie wie folgt vor:
while True :
if condition :
break
Auspacken
Variablen tauschen:
a, b = b, a
Mehrfachzuweisungen:
Das Obige ist nur ein Ergebnis dessen, was wir "Auspacken" nennen (hier angewendet auf ein Tupel). Eine einfache Möglichkeit, dies zu erklären, besteht darin, dass Sie jeden Wert einer beliebigen Sequenz direkt einer gleichen Anzahl von Variablen in einer Zeile zuweisen können:
animal1, animal2, animal3, animal4 = ["cow", "dog", "bird", "fish"]
Dies hat viele Auswirkungen. Während Sie in einem mehrdimensionalen Array iterieren, erhalten Sie normalerweise jede Teilsequenz einzeln und verwenden sie dann, zum Beispiel:
agenda = [("steve", "jobs"), ("linus", "torvald"), ("bill", "gates"),("jon", "skeet")]
for person in agenda:
print person[0], person[1]
Beim Entpacken können Sie die Werte aber auch direkt Variablen zuweisen:
agenda = [("steve", "jobs"), ("linus", "torvald"), ("bill", "gates"),("jon", "skeet")]
for name, lastname in agenda:
print name, lastname
Wenn Sie während der Iteration einen Index erhalten möchten, verwenden Python-Codierer die folgenden Redewendungen (enumerate () ist eine Standardfunktion):
for index, value in enumerate(sequence) :
print index, value
Funktionsaufrufe auspacken
Dies ist eine fortgeschrittene Verwendung, und Sie können sie überspringen, wenn es Sie stört.
Sie können Werte mit dem Zeichen "*" entpacken, um eine Sequenz direkt in einem Funktionsaufruf zu verwenden. Z.B:
>>> foo(var1, var1, var3) :
print var1, var2
print var3
>>> seq = (3.14, 42, "yeah")
>>> foo(*seq)
3.14 42
yeah
Es gibt noch mehr als das. Sie können ein Wörterbuch als benannte Variablen entpacken und Funktionsprototypen mit schreiben *,
**um eine beliebige Anzahl von Argumenten zu akzeptieren. Aber es hat nicht genug verdient, um diesen Beitrag noch länger zu machen :-).
String-Formatierung:
print "This is a %s on %s about %s" % ("post", "stackoverflow", "python")
print "This is a %(subject)s on %(place)s about %(about)s" % {"subject" : "post", "place" : "stackoverflow", "about" : "python"}
Iterable in Scheiben schneiden:
Sie können jeden Teil eines Iterables mit einer sehr präzisen Syntax abrufen:
print "blebla"[2:4]
last = string[:-1]
even = (0,1,2,3,4,5,6,7,8,9)[::2]
reversed = string[::-1]
Logische Überprüfungen:
Sie können überprüfen, wie Sie es in C # tun, aber es gibt "pythonische" Möglichkeiten (kürzer, klarer :-)):
if 1 in (1, 2, 3, 4) :
if var :
if not var :
if thing is var:
if thing is None :
Combo (alle Wörter, die ein "o" in Großbuchstaben enthalten, in eine Zeile drucken):
sentence = "It's a good day to write some code"
print " ".join([word.upper() for word in sentence.split() if "o" in word])
Ausgabe: "GUT ZU EINIGEM CODE"
Es ist einfacher, um Vergebung zu bitten als um Erlaubnis
Python-Codierer prüfen normalerweise nicht, ob etwas möglich ist. Sie sind ein bisschen wie Chuck Norris. Sie machen es. Dann fangen Sie die Ausnahme. In der Regel überprüfen Sie nicht, ob eine Datei vorhanden ist, sondern versuchen, sie zu öffnen, und führen einen Rollback durch, wenn sie fehlschlägt:
try :
f = open(file)
except IOerror :
print "no file here !"
Natürlich verwendet Chuck Norris niemals Ausnahmen, da er niemals versagt.
Die else-Klausel
"Else" ist eine Welt mit vielen Verwendungsmöglichkeiten in Python. Sie finden "sonst" nach "wenn", aber auch nach "außer" und "für".
for stuff in bunch :
else :
Dies funktioniert auch für die "while" -Schleife, auch wenn wir diese Schleife nicht so oft verwenden.
try :
except ToCrazyError :
else :
finally :
Wenn Sie neugierig sind, finden Sie hier eine Reihe fortgeschrittener schneller und schmutziger (aber netter) Python-Schnipsel .