Python for C# developers and vice versa
1. Shortcuts in Visual Studio (C#)
Die CTRL-Taste bleibt jeweils gedrückt:
- CTRL K + D: Code formatieren (Klammern und Einrückungen richten, hat keinen Einfluss auf Logik des Codes)
- CTRL K + C: kommentiert ausgewählte Codezeilen
- CTRL K + U: unkommentiert ausgewähle Codezeilen
2. Ausgabe in Konsole
Ausgabe in der Konsole:
C#:
Console.WriteLine("Hello World");
Python:
print("Hello World")
3. Typen
Der erste grosse Unterschied ist, dass Python dynamisch typisier während C# typsicher ist.
Soll in Python die Variable a ein Integer mit Wert 7 sein, so kann man einfach schreiben
a = 7
Python erkennt selbst, dass es sich hier um einen Int handelt.
In C# hingegen muss man zuerst den Typ angeben:
int a = 7;
Beachte auch, dass in C# eine Zeile mit einem Semikolon beendet werden muss. Dies ist in Python nicht der Fall.
Der Typ einer Variable kann in Python auch beliebig verändert werden. Folgender Code ist z.B. völlig unproblematisch:
a = 7 a = "Ich bin jetzt ein String" a = False # Boolean a = [1,2,3,4,5] # Liste
Dies ist nicht möglich in C#:
int a = 7; string b = "Ich bin jetzt ein String"; bool c = false;
Ein Kommentar wird in C# mit dem \\ und in Python mit dem #-Symbol gekennzeichnet.
3.1 Listen
In C# ist ein Array quasi eine Liste mit konstanter Grösse: es ist unmöglich, ein Array zu erweitern oder zu kürzen. Der folgende Code erzeugt ein int-Array, welcher genau 5 ints beinhaltet:
int[] A = new int[] { 1, 3, 5, 7, 8 }; A[1] = 33;
Die Werte des des Array können geändert werden, die Länge des Arrays kann aber nicht verändert werden. Möchte man dies tun, so kann man eine List verwenden:
List<int> B = new List<int> { 1, 3, 5, 7, 9 }; B.Add(11); // erweitert die Liste B.RemoveAt(1); // entfert das Element mit index 1, also die 3
Tipp: Arrays sind performanter als Listen und sind klar zu bevorzugen, wenn von Anfang an klar ist, um wie viele Elemente es sich handelt.
In Python erstellt man eine Liste wie folgt:
L = [1,2,3]
Man kann ihr dann wie folgt ein weiteres Element anhängen:
L.append(4)
Speziell an Python ist, dass die Elemente einer Liste beliebige Typen sein können:
K = [1,True,3.14,"hallo",[6,7,8]]
Beachte, dass das letzte Element der Liste K selbst wieder eine Liste ist.
4. Funktionen
In C# wird eine Funktion wir folgt deklariert:
public static string NumbersToString(int a, int b, int c) { return a.ToString() + b.ToString() + c.ToString(); }
Diese Funktion nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und gibt sie zurück.
Die äquivalente Funktion in Python sieht wie folgt aus:
def numbers_to_string(a,b,c): return f"{a}{b}{c}"
Erklärung:
- Mit def wird eine Funktion gekennzeichnet.
- Der Typ des Rückgabewerts wird nicht angegeben. Hat eine Funktion keinen Rückgabewert (in C#: void), so hat diese Funktion in Python einfach kein return-Statement, alles andere bleibt unverändert.
- Der Typ der Argumente (a,b,c) wird nicht angegeben.
- In C# wird der Codeblock, der zur Funktion gehört, in geschwungenen Klammern geschrieben. In Python gibt es diese nicht. Stattdessen wird der Code mit der Tabulatortaste eingerückt.
5. Schleifen
5.1 For-Schleife
C#:
for (int i = 0; i < 5; i++) { Console.WriteLine(i); }
Python:
for i in range(5): print(i)
Beachte, dass in Python die Einrückung wahnsinnig wichtig ist. In C# ist die Einrückung irrelevant. Um den Code übersichtlich zu gestalten lohnt es sich aber, die einzelnen Codezeilen sinnvoll einzurücken. Mit dem Shortcut Ctrl + K + D (Ctrl bleibt gedrückt) übernimmt wird diese Arbeit vom Visual Studio übernommen. Wende diesen Shortcut exzessiv an!
Der folgende Code in beiden Sprachen beinhaltet zwei verschachtelte for-Schleifen und ist gleichwertig:
C#:
for (int i = 0; i < 3; i++) { Console.WriteLine("---------------"); Console.WriteLine("i=" + i+ " begin"); for (int j = 0; j < 2; j++) { Console.WriteLine("j=" + j); } Console.WriteLine("i=" + i + " end"); }
Python:
for i in range(3): print("---------------") print(f"i={i} begin") for j in range(2): print(f"j={j}") print(f"i={i} end")
Der erste und dritte print-Befehl gehört zur ersten for-Schleife. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schleife.
In beiden Sprachen kann ganz einfach durch eine Liste (resp. ein Array) durch itteriert werden:
C#:
foreach (var a in A) { Console.WriteLine(a); }
Python:
for a in A: print(a)
5.2 While-Schleife
C#:
int i = 0; while (i < 5) { Console.WriteLine(i); i++; }
Python:
i = 0 while (i<5): print(i) i += 1