Skip to main content

Structures de contrôle Python (avec exemples)

Boucles

Contrairement à C et ST, for les boucles en Python ne comptent pas les variables de boucle, mais itèrent sur une séquence. Ce type de séquence peut être un "dictionnaire", une liste, un tuple, les caractères d'une chaîne ou les lignes d'un fichier.

L'exemple suivant montre quelques for boucles:

Exemple 13. Exemple : loops.py
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)

Sortie résultante :

_cds_script_messages_loops.png


Si vous avez besoin d'un index ou d'un numéro en plus de l'article, vous devez utiliser enumerate comme indiqué dans le dernier cas de l'exemple de script. Le code suivant est considéré comme de mauvais style :

Exemple 14. Exemple : Mauvais style
text = "CODESYS"

for i in range(len(text)):   # BAD STYLE!
    v = text[i]              # DON'T TRY THIS AT HOME!
    print(i, v)


Outre for boucles, Python a aussi while boucles qui sont très similaires à celles en C et ST :

Exemple 15. Exemple de boucle "while"
i = 0
while i < 3;
    print(i)
    i += 1

Remarque : Cet exemple n'est pas très pratique. Vous utiliseriez plus probablement un for boucle avec une plage.



SINON

La if/else La construction est similaire à celles des autres langages de programmation. Voici un court exemple :

Exemple 16. Exemple : "if_else.py"
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.")


La else branch est facultatif et il peut y avoir zéro, un ou plusieurs elif branches.

Fonctions, classes et méthodes

Python permet de définir des fonctions et des classes avec des méthodes. Une classe avec des méthodes est fondamentalement similaire à un bloc fonctionnel dans ST ou à des classes dans des langages tels que C++, Java ou C#. Cependant, Python ne prend pas en charge les interfaces.

Pour des informations détaillées, consultez la documentation Python pour définir Les fonctions et Des classes.

Exemple 17. Exemples : fonctions, classes et méthodes
#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")


Modules et bibliothèques standards

Dans IEC, vous pouvez importer des bibliothèques pour les réutiliser par d'autres codes écrits. En pendant, il y a la possibilité en Python d'importer des modules.

La Bibliothèque standard Python contient de nombreux modules à des fins différentes, telles que :

  • Traitement des chaînes

  • Gestion de la date et de l'heure

  • Collections

  • Enfilage

  • Fonctions mathématiques

  • La gestion des fichiers

  • Persistance

  • Compression et archivage

  • Accès à la base de données

  • Services de chiffrement

  • Accès réseau et Internet

  • Envoi d'e-mails

Pour créer vos propres modules, écrivez un fichier Python qui définit les fonctions et les classes que vous souhaitez fournir. Enregistrez ce fichier dans le même répertoire que notre exemple de script. Si vous nommez le fichier mymodule.py, alors vous pouvez l'importer avec import mymodule.

Voici un exemple d'importation et d'utilisation de la fonction cosinus et de la constante pi de la math module:

Exemple 18. Exemple : Importer une fonction mathématique
from math import cos, pi

print(pi) # prints 3.14159265359

print(cos(pi)) # prints -1.0


Ce qui suit contient d'autres exemples qui accèdent aux informations sur le système d'exploitation, la version de Python et l'interpréteur :

Exemple 19. Plus d'exemples d'importation
import os
print(os.environ["OS"])

from sys import platform, version, executable
print(platform)
print(version)
print(executable)
_cds_script_print_version_info.png


Il y a un module spécial __future__ pour activer de nouvelles fonctionnalités linguistiques. Surtout, il est utilisé lorsque les développeurs Python introduisent de nouvelles fonctionnalités rétrocompatibles. Ces types de fonctionnalités doivent être activés avec des "__future__ importations". Un exemple que nous utilisons dans la plupart de nos exemples de scripts ici est l'activation de la nouvelle syntaxe de puissance de print comme une fonction au lieu d'une instruction.

Exemple 20. Exemple : "__futur__"
# make print() a function instead of a statement
from __future__ import print_function


La documentation Python fournit une liste de tous __future__ importations.

En plus des modules Python normaux, le code IronPython peut également accéder aux assemblages .NET comme s'il s'agissait de modules Python. Cela ouvre l'accès au bibliothèque de classes de framework .NET et des bibliothèques tierces. Voici un exemple d'ouverture d'une boîte de dialogue à l'aide de la Windows Forms bibliothèque:

Exemple 21. Exemple : Ouverture d'une boîte de dialogue .NET
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox

MessageBox.Show("Hello")