Strutture di controllo Python (con esempi)
Cicli
A differenza di C e ST, for
i loop in Python non contano le variabili di loop, ma eseguono l'iterazione su una sequenza. Questo tipo di sequenza può essere un "dizionario", un elenco, una tupla, i caratteri di una stringa o le righe di un file.
L'esempio seguente ne mostra alcuni for
loop:
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)
Uscita risultante:

Se hai bisogno di un indice o di un numero oltre all'articolo, dovresti usarlo enumerate
come mostrato nell'ultimo caso dello script di esempio. Il codice seguente è considerato uno stile scadente:
text = "CODESYS" for i in range(len(text)): # BAD STYLE! v = text[i] # DON'T TRY THIS AT HOME! print(i, v)
inoltre for
loop, anche Python ha while
loop che sono molto simili a quelli in C e ST:
i = 0 while i < 3; print(i) i += 1
Nota: questo esempio non è molto pratico. È più probabile che tu usi a for
loop con un intervallo.
SE ALTRO
Il if/else
build è simile a quelli di altri linguaggi di programmazione. Ecco un breve esempio:
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.")
Il else
branch è facoltativo e possono esserci zero, uno o molti elif
rami.
Funzioni, classi e metodi
Python consente di definire funzioni e classi con metodi. Una classe con metodi è fondamentalmente simile a un blocco funzione in ST o classi in linguaggi come C++, Java o C#. Tuttavia, Python non supporta le interfacce.
Per informazioni dettagliate, vedere la documentazione Python per la definizione Funzioni e Classi.
#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")
Moduli e librerie standard
In IEC, puoi importare librerie per il riutilizzo da parte di altro codice scritto. Come ciondolo, c'è la possibilità in Python di importare moduli.
Il Libreria standard Python contiene molti moduli per scopi diversi, come ad esempio:
Elaborazione di stringhe
Gestione della data e dell'ora
Collezioni
Filettatura
Funzioni matematiche
Gestione dei file
Persistenza
Compressione e archiviazione
Accesso al database
Servizi di crittografia
Rete e accesso a Internet
Invio di email
Per creare i tuoi moduli, scrivi un file Python che definisce le funzioni e le classi che vuoi fornire. Salva questo file nella stessa directory del nostro script di esempio. Se dai un nome al file mymodule.py
, quindi puoi importarlo con import mymodule
.
Ecco un esempio di importazione e utilizzo della funzione coseno e della costante pi dal file math
modulo:
from math import cos, pi print(pi) # prints 3.14159265359 print(cos(pi)) # prints -1.0
Quanto segue contiene altri esempi che accedono alle informazioni sul sistema operativo, la versione Python e l'interprete:
import os print(os.environ["OS"]) from sys import platform, version, executable print(platform) print(version) print(executable)

C'è un modulo speciale __future__
per l'attivazione di nuove funzionalità linguistiche. Soprattutto, viene utilizzato quando gli sviluppatori Python introducono nuove funzionalità compatibili con le versioni precedenti. Questi tipi di funzionalità devono essere attivati con appositi "__future__
imports". Un esempio che utilizziamo nella maggior parte dei nostri script di esempio qui è l'attivazione della nuova sintassi di alimentazione di print
come una funzione anziché come un'istruzione.
# make print() a function instead of a statement from __future__ import print_function
La documentazione di Python fornisce un completo elenco di tutti __future__
importazioni.
Oltre ai normali moduli Python, il codice IronPython può anche accedere agli assembly .NET come se fossero moduli Python. Questo apre l'accesso al Libreria di classi .NET Framework e librerie di terze parti. Ecco un esempio di come aprire una finestra di dialogo tramite il Windows Forms
biblioteca:
import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import MessageBox MessageBox.Show("Hello")