Python for C# developer and vice versa

Ausgabe in der Konsole:

C#:

Console.WriteLine("Hello World");

Python:

print("Hello World")

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#

Ein Kommentar wird in C# mit dem \\ und in Python mit dem #-Symbol gekennzeichnet.

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;
<\code>
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:
<code csharp>
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
<\code>
 
In Python erstellt man eine Liste wie folgt:
 
<code python>
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.

In C# wird eine Methode wir folgt deklariert:

public static string NumbersToSting(int a, int b, int c)
{
    a.ToString() + b.ToString() + c.ToString();
}

Diese Methode nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und giebt sie zurück.

Die äquivalente Methode in Python sieht wie folgt aus:

def numbers_to_string(a,b,c):
    return f"{a}{b}{c}"

Erklärung:

  • Mit def wird eine Methode gekennzeichnet.
  • Der Typ des Rückgabewerts wird nicht angegeben. Hat eine Methode keinen Rückgabewert (in C#: void), so hat diese Methode 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 Methode gehört, in geschwungene Klammern geschrieben. In Python gibt es diese nicht. Stattdessen wird der Code mit der Tabulatortaste eingerückt.

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. Betrachte dazu den folgenden Code in beiden Sprachen, der zwei verschachtelte for-Schlaufen enthält:

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-Schlaufe. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schlaufe.

C#:

int i = 0;
while (i < 5)
{
    Console.WriteLine(i);
    i++;
}

Python:

i = 0
while (i<5):
    print(i)
    i += 1
  • talit/pythonforcsharp.1581285272.txt.gz
  • Zuletzt geändert: 2020-02-09 21:54
  • von sca