Introduction





L’interpréteur Python peut s’employer comme une calculatrice en ligne de commande. Les trois chevrons attendent l’expression à évaluer, le résultat apparaissant à la ligne (sans les chevrons) après validation

>>> 3*(1+0.01)**10
3.3138663762336136

On peut utiliser l’éditeur IDLE (IDLE Python GUI est dans le dossier PythonXX (XX=27, 34, 35…) de la liste des Programmes), disponible avec la version de base.

idlescreen2

Pour des projets de tailles modestes, IDLE peut suffire, mais il est conseillé de télécharger un outil de développement tel que PyCharm (les version Community Edition et Education sont gratuites) ou bien Spyder, pour une gestion plus conviviale de projets partagés en plusieurs modules.
Dans cette présentation, nous utiliserons un éditeur (ou bien, dans IDLE, New File), d’où l’absence des 3 chevrons >>> en début de ligne d’instruction.
Cette introduction aborde brièvement quelques particularismes de Python qui interviennent de manière récurrente dans la rédaction d’un programme python.
Seront aussi rappelées quelques notions de base concernant la manipulation des objets et de leurs attributs – membres et méthodes. En effet, un programme python peut être écrit dans une logique fonctionnelle, comme dans une logique orientée objet.

Règles d’écriture du code

Plus que des conventions d’écriture permettant une meilleure lisibilité des programmes, les règles d’indentation sont obligatoires: elles s’appliquent, aux boucles de calcul, aux traitements conditionnels, ainsi qu’à la définition des fonctions et des classes. Ces indentations sont aussi le moyen de faire l’économie de certaines lignes de code qui deviennent inutiles.
Exemple: définition d’une fonction effectuant la somme des éléments d’une liste (rassurez-vous, il existe une fonction python, sum, qui fait ça très bien)
 

 
L’interpréteur Python, contrairement à un compilateur, prend en compte l’ordre dans lequel les fonctions et les variables sont introduites dans le programme. En particulier, la définition des fonctions ne peut pas être repoussée en fin de script si elles doivent être utilisées dans le corps de celui-ci. Par exemple, l’exécution du code suivant, dans lequel une fonction est appelée avant d’avoir été définie, produira un message d’erreur
 

 

Concision du code

Python permet de raccourcir le code en regroupant

  • des opérations d’affectation: par exemple,
    a, l, t = 1, [1,2,3], (‘james’,’bond’,’007′)
    # équivaut à
    a=1; l=[1,2,3]; t=(‘james’,’bond’,’007′)
  • des tests de comparaison
    7>5>3>1
    # équivaut à
    7>5 and 5>3 and 3>1

Mais le plus apprécié des programmeurs en Python est la possibilité de réduire en une ligne certains traitements qui prendraient plusieurs lignes en C++, Java ou… VBA: listes en compréhension, fonctions à la volée, etc. Ces techniques seront vues en détail (voir § Tests et boucles, Collections, Fonctions)

Importation de packages/modules

Un module est un fichier contenant des définitions de variables, fonctions ou classes d’objets, disponibles pour être utilisées dans un programme distant (un peu à la manière de #include en C). Ces modules ont généralement une extension en .py, s’agissant de code écrit en Python, mais certains modules sont écrits par exemple en C (le module math entre autres).
Un package est une suite de modules.
Parmi les modules le plus courants, citons time, sys, math ou calendar.
Parmi les packages, numpy et pandas sont largement utilisés, essentiellement pour le calcul matriciel et l’analyse de données.
Le module dans lequel se trouve le programme principal s’appelle __main__. Il débute généralement par une ou quelques lignes qui lui indiquent d’importer d’autres modules dont il pourrait avoir besoin.

import <nom_module>

Pour appeler un objet défini dans un module importé, on le fait préfixer par le nom du module suivi d’un point. Cette syntaxe s’inspire des règles de programmation orientée objet, en identifiant l’objet à un membre ou une méthode et le module à la classe à laquelle il appartient. Par exemple, si l’on veut récupérer le nombre pi, défini dans le module math et générer un nombre aléatoire gaussien standard dont la fonction est définie dans le module random
 

 
On peut appliquer au nom d’un module un alias en vue de raccourcir le code
 

 

Notions sur les classes d’objets

Certaines lignes de code fournies à titre d’exemples applicatifs, dans les différents chapitres qui vont suivre, font intervenir des notations propres à la programmation objet, c’est à dire à la manipulation des classes d’objet, bien que cette partie ne soit traitée en détail que vers la fin (voir § Classes d’objets personnalisées).
Quelques notions préliminaires sont donc nécessaires.

La P.O.O. (Programmation Orientée Objet) dont il est en partie question ici diffère de la programmation dite procédurale

  • La programmation procédurale enchaîne des tâches employant des fonctions et des données créées au fil de l’eau, selon les besoins
  • la POO rattache chaque variable et chaque fonction à une structure (c’est un peu vague, d’accord), appelée classe d’objet, au sein de laquelle une fonction est appelée méthode et une donnée attribut (ou membre).
    NB: On emploie aussi le mot membre pour désigner indifféremment une méthode ou un attribut de classe.

Pour utiliser une méthode ou avoir accès à un attribut de classe, il faut évidemment que ces attributs aient une valeur: l’initialisation d’un ou plusieurs membres d’une classe d’objet s’appelle une instanciation, et l’objet ainsi créé s’appelle instance.
NB: On pourrait établir une analogie entre classe et schéma de base de données, où les membres de la classe seraient les champs de la base de données, et chaque enregistrement représenterait une instance.

Même sans créer d’instance, il y a quand même une trace physique de la classe en mémoire (forcément !) une fois que celle-ci a été définie: l’objet existe, mais pas l’instance.

Le signe que nous avons affaire à une méthode est le caractère ‘.’, qui lie la méthode à l’objet auquel elle est rattachée. Cette syntaxe est familière aux programmeurs VBA, elle se retrouvera aussi, par exemple, lorsque nous manipulerons des séquences, c’est à dire des collections de données.
Prenons par exemple la liste de valeurs référencée sous le nom de seq. Cette liste est un objet appartenant à la classe list.
Si l’on veut connaître le nombre d’occurrences de la lettre ‘a’ dans seq, on utilisera une fonction entrant dans la définition de la classe list, à savoir count: cette fonction est donc une méthode, et on doit l’appeler en la reliant à l’objet seq à l’aide d’un point.

seq.count(« a »)

NB: En réalité, Python n’est pas à strictement parler un langage orienté objet, puisque l’on peut aussi bien écrire des scripts de manière procédurale, dans lesquels on crée « à la volée » des classes d’objets si nécessaire.
Une autre particularité de Python, et plus particulièrement des versions 3.x, est que les variables élémentaires, telles que nombres entiers ou décimaux, comme les collections de valeurs (listes, tuplets, etc.) dont nous venons de voir un exemple ci-dessus, sont considérées aussi comme classes d’objets, même si leur définition se résume à la donnée d’une ou plusieurs valeurs.
On peut donc s’initier à la syntaxe orientée objet à l’aide d’exemples très simples.