Formation Python 3 Release 2015.12
Total Page:16
File Type:pdf, Size:1020Kb
Formation Python 3 Release 2015.12 NormandDEV December 04, 2015 CONTENTS 1 Sommaire 3 1.1 Introduction...............................................3 1.2 Les fonctions............................................... 24 1.3 Les modules............................................... 34 1.4 Programmation objet........................................... 44 1.5 Les tests................................................. 72 1.6 Projet BallPack.............................................. 85 1.7 Documentations............................................. 91 i ii Formation Python 3, Release 2015.12 Il s’agit d’une formation de base à Python. La même formation sera jouée dans les différentes régions, par des intervenants locaux. 6 demi-journées: • Introduction : installation et prise en main, initiation à la syntaxe Python, les types de données standard, les structures de contrôle. • Les fonctions • Les modules et le packaging • La programmation objet • Les tests et la documentation • Projet de manipulation Les travaux pratiques de la formation seront effectués avec l’environnement virtualenv et IPython (Python 3). Les supports de cours sont disponibles sur Sourcesup: https://sourcesup.renater.fr/frs/?group_id=2055 CONTENTS 1 Formation Python 3, Release 2015.12 2 CONTENTS CHAPTER ONE SOMMAIRE 1.1 Introduction 1.1.1 Qu’est ce que Python ? Python a été créé par Guido van Rossum en 1989. Le langage Python : • est placé sous une licence libre proche de la licence BSD2 • fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix en passant par GNU/Linux, Mac OS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser. Que peut-on faire avec Python ? Web Django, TurboGears, Zope, Plone,... Bases de données MySQL, PostgrSQL, Oracle,... Réseaux 3 Formation Python 3, Release 2015.12 TwistedMatrix, PyRO,... UI Gtk, Qt, Tcl/Tk, WxWidgets, Kivy,... Représentation graphique gnuplot, matplotlib, VTK,... Calcul scientifique numpy, scipy, sage,... ... Principales caractéristiques de ce langage Python est un langage de programmation qui permet de travailler plus vite. • langage de programmation à usage général de haut niveau • riche et polyvalent • interprété • ouvert et multiplateforme • facilité d’apprentissage et de mise en œuvre • diversité des outils de développement • stable/mature, très répandu et évolutif Comment est traduit mon code en langage machine ? Il existe 2 techniques principales pour effectuer la traduction en langage machine de mon code source : • Interprétation • Compilation 4 Chapter 1. Sommaire Formation Python 3, Release 2015.12 Comment est traduit mon code en langage machine ? Qu’en est-il pour mon code Python ? Les différentes versions de Python Il existe deux versions de Python (Python 2.x et Python 3.x). Les modifications apportées sont assez importantes pour qu’un code écrit en 2.x ne fonctionne pas en 3.x. Pour vous aider à transférer vos codes, vous avez à disposition un programme 2to3.py. Nous avons choisi de réaliser cette formation sur la version 3 et en utilisant l’environnement virtualenv. Le choix de la version est important puisqu’il est en étroite relation avec les modules et paquets dont vous avez besoin. Les implémentations de Python Il existe plusieurs implémentations de Python qui permettent d’étendre le langage avec des librairies dans d’autres langages : • CPython : L’interpréteur de référence de Python. Il génère du byte-code Python (fichier *.pyc) et est écrit en C; il permet d’étendre le langage avec des librairies C. • Jython : Interpréteur qui permet de coupler du Python et du Java dans le même programme, génère du byte-code Java. • IronPython : Implémentation de Python qui vise .Net et Mono, permet de coupler Python avec le framework .Net. • Pypy : Implémentation de Python en Python; projet de recherche pour obtenir une implémentation plus rapide que l’implémentation de référence (CPython). Plus d’informations sur les implémentations ici Les différents IDE pour Python IDE multi-plateforme NetBeans PyCharm KDevelop PyDev Wing IDE - propriétaire Spyder IDLE IDLEX IEP PTK PyStudio Eric IDE Plus d’informations sur les IDE ici 1.1. Introduction 5 Formation Python 3, Release 2015.12 1.1.2 L’environnement virtualenv Description Virtualenv est un outil qui permet de créer des environnements Python isolés. Cela permet de travailler sur plusieurs projets ayant chacun ses propres dépendances en évitant notamment les conflits entre différentes versions d’une même bibliothèque. Utilisation • pour créer un environnement virtuel (virtualenv) nommé env : pyvenv-3.4 env • pour rentrer dans le virtualenv : source env/bin/activate • pour installer ipython dans le virtualenv: pip install ipython • pour en sortir : deactivate • pour le supprimer : rm -rf env Premiers pas avec l’interpréteur interactif Ce matin, le cours va se poursuivre sous IPython. IPython est un interpréteur Python à la différence qu’il permet de : • chercher une méthode dans un module ou un namespace, • afficher le prototype d’une méthode ou d’une fonction, • utiliser la complétion dans l’espace de nom local et • afficher l’historique des commandes. Dans IPython, on accède à l’aide en tapant help() et on quitte l’aide avec la commande quit. L’aide dans IPython, c’est aussi : • help(“topics”) : énumère les différents “concepts” Python au sujet desquels on peut demander de l’aide ; taper ensuite • help(“SUJET”) pour avoir de l’aide sur le SUJET souhaité • help(objet) : affiche des informations sur l’objet Python spécifié (variable, fonction...) telles que son type, ses méthodes... • help(“module”) : affiche l’aide relative au module spécifié ; si le module est importé on peut directement faire help(module) (sans guillemets) • help(“module.objet”) : affiche directement l’aide relative à l’objet spécifié du module Pour vous donner une idée taper : help("print") print("Hello World !") 1+1 6 Chapter 1. Sommaire Formation Python 3, Release 2015.12 1.1.3 Initiation à la syntaxe de Python Le nom des variables en Python doit satisfaire plusieurs critères : • il ne doit pas commencer par un chiffre, • les minuscules et les majuscules sont distinguées, • il ne doit pas y avoir de caractères accentués. Le dernier critère n’est plus à vérifier dans la version 3.x puisqu’il travaille en Unicode. Le langage Python est basé sur un certain nombre de documents proposant des améliorations du langage: les PEPs. Le guide des bonnes pratiques concernant l’écriture de code Python est défini dans le PEP8. Python est sensible aux noms des variables. Il n’aime pas les accents (théoriquement plus avec Python 3 puisqu’il travaille en Unicode) mais différencie les minuscules des majuscules. Nous resterons en ASCII pour éviter tout litige. Comme tout langage, Python a ses mots clés : help("keywords") False def if raise None del import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from or continue global pass Nous allons maintenant voir les types simples et les types containers. Les types simples 4 types simples: • booléen, • entier, • réel, • complexe. Les booléens # le type booléen prend les valeurs True ou False logique= True logique= False type(logique) Les entiers a=2;i=-12 # int : entier de précision illimitée ! v=2 **80 # => 1208925819614629174706176 1.1. Introduction 7 Formation Python 3, Release 2015.12 # définition d'entiers en binaire, octal ou hexadéc.: k= 0b111 # => 7 m=0o77 # => 63 n= 0xff # => 255 # conv. chaînes bin/octal/hexa en entier & vice-versa: int('111',2) # => 7, et inverse: bin(7) => '0b111' int('77',8) # => 63, et inverse: oct(63) => '0o77' int('ff', 16) # => 255, et inverse: hex(255) => '0xff' Quelques remarques • ; n’est utilisé que si il y a plusieurs instructions sur la même ligne. • La fonction type() vous permet de connaître le type de la variable. • Le symbole # permet d’écrire un commentaire jusqu’au retour à la ligne. Les réels Les réels sont codés en double précision (64 bits). b=-3.3;r= 3e10 abs(b) # => 3.3 # arrondi et conversion int(3.67) # => 3 (int) int(-3.67) # => -4 (int) round(3.67) # => 4 (int), comme round(3.67, 0) round(3.67,1) # => 3.7 (float) round(133,-1) # => 130 (int) round(133,-2) # => 100 (int) Complexe flottant cplx= 3.4+ 2.1j # ou: cplx = complex(3.4, 2.1) cplx.real # => 3.4 cplx.imag # => 2.1 Remarque : Python est un langage objet. Vous verrez qu’il existe des méthodes associés à un type comme ici pour les nombres complexes. Interaction avec l’écran et le clavier Deux fonctions vont nous être utiles : print et input. - print(arguments) - input(prompt) Attention, si vous souhaitez entrer une chaîne de caractères, il vous faudra utiliser les guillemets (simples ou doubles). help("print") help("input") a=3 b=2 print('Le produit de', a,'et', b,'est', a *b) 8 Chapter 1. Sommaire Formation Python 3, Release 2015.12 print('Le produit de %d et %e est %e'%(a, b, a*b)) print('Le produit de {0} et {1:.3f} est {2:.3f}'.format(a, b, a*b)) nom= input("Quel est votre nom ?") age= input("Quel âge avez-vous ?") type(age) age= int(age) print (bin(age)) print (hex(age)) Instruction sur plusieurs lignes et commentaires Imaginons que nous sommes des linguistes ; on veut étudier la première phrase de présentation du CNRS : “Le Centre national de la recherche scientifique est un organisme public de recherche (Établissement public à caractère scientifique et technologique, placé sous la tutelle du Ministère de l’Éducation nationale, de l’Enseignement supérieur et de la Recherche). Il produit du savoir et met ce savoir au service de la société.” • Faites afficher cette phrase : print(“blabla”) print("Le Centre national de la recherche scientifique est un organisme public de recherche (Établissement public à caractère scientifique et technologique, placé sous la tutelle du Ministère de l'Éducation nationale, de l'Enseignement supérieur et de la Recherche).") Pour des raisons de libilité et de portabilité, le guide de style Python recommande de ne pas dépasser 79 caractères sur une ligne de code..