Python Kontrollstrukturen und Beispiele
Schleifen
Im Unterschied zu C und ST, zählen for
-Schleifen in Python keine Schleifenvariable, sondern iterieren über eine Sequenz. Eine solche Sequenz kann beispielsweise ein „Dictionary“, eine Liste, ein Tupel, die Zeichen in einem String, oder die Zeilen in einer Datei sein.
Das folgende Beispiel zeigt einige for
-Schleifen:
from __future__ import print_function print("Enumerating over a simple list:") for i in (1,2,3,4): print(i, end=", ") # end= replaces the newline with ", " print() # but we still need a newline at the end of this case. print("Enumerating over the characters in a string:") for i in "CODESYS": # characters are representet as strings of length 1. print(i, end=", ") print() print("Enumerating over the integers 1 to 4:") for i in range(1, 5): # upper bound is exclusive. print(i, end=", ") print() print("Enumerating using xrange:") for i in xrange(5): # xrange is similar to range, but needs less memory for large ranges. print(i, end=", ") print() print("Enumerating including the item number:") for i, v in enumerate("CODESYS"): print(i, v)
Resultierende Ausgabe:

Wenn Sie Index oder Nummer zusammen mit dem Item benötigen, sollten Sie enumerate
verwenden, wie oben im letzten Fall des Beispielskripts gezeigt. Es gilt als schlechter Stil, Code wie den folgenden zu verwenden:
text = "CODESYS" for i in range(len(text)): # BAD STYLE! v = text[i] # DON'T TRY THIS AT HOME! print(i, v)
Neben den for
-Schleifen gibt es in Python auch while
-Schleifen, die denen in C oder ST sehr ähnlich sind:
i = 0 while i < 3; print(i) i += 1
Anmerkung: Dieses Beispiel ist nicht sehr praxisnah, man würde eher eine for
-Schleife mit Bereichsangabe verwenden.
IF / ELSE
Das if/else
-Konstrukt ist denen ähnlich, die wir aus anderen Programmiersprachen kennen. Hier ein kurzes Beispiel:
from __future__ import print_function i = int(system.ui.query_string("Please enter an integral number...")) if i < 0: print("Your number was negative.") elif i > 0: print("Your numer was positive.") else: print("It seems your number was zero.")
Der else
-Zweig ist optional und es kann keine, einen oder mehrere elif
-Zweige geben.
Funktionen, Klassen und Methoden
Python erlaubt es, Funktionen und Klassen mit Methoden zu definieren. Eine Klasse mit Methoden ist grob einem Funktionsbaustein in ST ähnlich, oder Klassen in Sprachen wie C++, Java oder C#. Aber Python unterstützt keine Schnittstellen.
Detaillierte Informationen finden Sie in der Python-Dokumentation zum Definieren von Funktionen und Klassen.
#defining a function with name sum and two parameters a and b: def sum(a, b): return a + b # we return the sum of a and b. # we can now call the function defined above: print(sum(5,7)) # Now we define a class Foo: class Foo: # The class gets a method "bar". # Note: for methods, the first parameter is always "self" and # points to the current instance. This is similar to "this" in # ST and other languages. def bar(self, a, b): print("bar(%s,%s)" % (a,b)) # We create an instance of the class: f = Foo() # We call the method bar on the instance. f.bar("some", "params")
Module und Standardbibliotheken
In IEC kann man Bibliotheken importieren, um von anderen geschriebenen Code wiederzuverwenden. Als Pendant gibt es in Python die Möglichkeit, Module zu importieren.
Die Python-Standardbibliothek enthält viele Module, die verschiedene Zwecke abdecken, wie beispielsweise:
String-Verarbeitung
Datums- und Zeithandhabung
Collections
Threading
Mathematische Funktionen
Dateihandhabung
Persistenz
Komprimieren und Archivieren
Datenbankzugriff
Verschlüsselungsdienste
Netzwerk- und Internetzugang
Senden von Emails
Um selbst ein Modul zu erzeugen, schreiben Sie am besten eine Python-Datei, die die Funktionen und Klassen definiert, die Sie bereitstellen wollen. Speichern Sie diese Datei im gleichen Verzeichnis wie unser Beispielskript. Wenn Sie die Datei mit mymodule.py
benennen, können Sie sie mit Hilfe von import mymodule
importieren.
Hier ein Beispiel für das Importieren der Cosinus-Funktion und der pi-Konstanten aus dem math
-Modul sowie für deren Verwendung:
from math import cos, pi print(pi) # prints 3.14159265359 print(cos(pi)) # prints -1.0
Im Folgenden weitere Beispiele, in denen auf Information zum Betriebssystem, zur Python-Version und zum Interpreter zugegriffen wird:
import os print(os.environ["OS"]) from sys import platform, version, executable print(platform) print(version) print(executable)

Es gibt auch ein spezielles Modul __future__
, mit dem Sie neue Sprach-Features aktivieren können. Es wird vor allem verwendet, wenn Python-Entwickler neue Funktionalitäten einführen, die rückwärtskompatibel sind. Solche Funktionalitäten müssen mit speziellen „__future__
-Importen“ aktiviert werden. Ein Beispiel, das wir in den meisten unserer Beispielskripte hier verwenden, ist das Aktivieren der neuen, mächtigeren Syntax von print
als Funktion anstatt als Anweisung.
# make print() a function instead of a statement from __future__ import print_function
In der Python-Dokumentation gibt es eine volle Liste aller __future__
-Importe.
Zusätzlich zu normalen Python-Modulen kann IronPython-Code auch auf .NET-Assemblys zugreifen, als wären sie Python-Module. Dies öffnet den Zugriff auf die .NET Framework Klassenbibliothek und Bibliotheken von Drittanbietern. Hier ein Beispiel, wie mit Hilfe der Bibliothek Windows Forms
eine Meldungsbox geöffnet wird:
import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import MessageBox MessageBox.Show("Hello")