<!-- title: Python description: published: true date: 2021-05-14T15:08:26.974Z tags: editor: ckeditor dateCreated: 2021-04-28T19:56:01.357Z --> <figure class="image image_resized" style="width:76.66%;"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Python_logo_and_wordmark.svg/1200px-Python_logo_and_wordmark.svg.png" alt="Fichier:Python logo and wordmark.svg — Wikipédia"></figure> <h1>Les bases du langage</h1> <h2>Algébrie</h2> <figure class="table"> <table style="background-color:rgb(255, 255, 255);"> <thead> <tr> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Opérateur</strong></th> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Usage</strong></th> </tr> </thead> <tbody> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>+</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Additionne deux nombres</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>-</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Soustrait deux nombres</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>*</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Multiplie deux nombres</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>/</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Divise deux nombres</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>//</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Retourne le nombre entier d'une division</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><strong>%</strong></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Retourne le reste d'une division</td> </tr> </tbody> </table> </figure> <p><i>Exemple :</i></p> <pre><code class="language-python">>>> 2+3 # Le résultat sera 5 >>> 3*3 # Le résultat sera 9</code></pre> <p> </p> <h2>Les variables</h2> <h3>Les bases</h3> <ul> <li>Déclaration d'une variable :</li> </ul> <pre><code class="language-python">nom_variable = valeur</code></pre> <p> </p> <blockquote> <ol> <li>Le nom de la variable ne peut être composé que de lettres, majuscules ou minuscules, de chiffres et du symbole souligné « _ » (appelé underscore en anglais).</li> <li>Le nom de la variable ne peut pas commencer par un chiffre.<br>3.Le langage Python est sensible à la casse, ce qui signifie que des lettres majuscules et minuscules ne constituent pas la même variable (la variable AGE est différente de aGe, elle-même différente de age).</li> </ol> </blockquote> <p>Il existe 2 conventions principales pour nommer une variable :</p> <ol> <li>On remplace les espaces par un <strong>_</strong> : <code>mon_age</code></li> <li>On écrit le début de chaque mot, sauf le premier, avec une majuscule : <code>monAge</code><br>Pour affecter une valeur à cette variable :</li> </ol> <pre><code class="language-python">monAge = 19</code></pre> <p>On peut interagir avec cette variable en modifiant son contenu comme bon nous semble :</p> <pre><code class="language-python">monAge = 19 # monAge vaut 19 monAge = monAge + 4 # monAge vaut 23 monAge = monAge * 2 # monAge vaut 46</code></pre> <p> </p> <h3>Différents types de données</h3> <figure class="table"> <table style="background-color:rgb(255, 255, 255);"> <thead> <tr> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Type de donnée</strong></th> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Commentaire</strong></th> </tr> </thead> <tbody> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Nombres entiers (int)</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Nombre sans virgule : <code>3</code></td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Nombres flottants (float)</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Nombre avec virgule : <code>3.2442</code></td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Chaine de caractères</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Contient des lettres, des phrases : <code>Bonjour !</code></td> </tr> </tbody> </table> </figure> <p>Pour les chaines de caractères, il faut faire attention aux types de guillements utilisés :</p> <pre><code class="language-python">maPhrase = 'J'aime le python' # Syntaxe incorrecte ! # Pour corriger cela, il faut échapper le ' : maPhrase = 'J\'aime le python' # Affiche bien la phrase maPhrase = "j'aime le python" # J'aime le python maPhrase = """j'aime le python""" # Les trois guillemets permettent de ne pas avoir à échapper les caractères, et permettent de faire un retour à la ligne sans utiliser \n</code></pre> <p> </p> <h3>trucs et astuces</h3> <h4>Incrémenter des variables</h4> <p>Lorsqu'il s'agit d'incrémenter des variables, on peut faire de plusieurs façons :</p> <pre><code class="language-python"># Méthode 1 : Rajouter la valeur à la variable maVariable = 1 maVariable = maVariable + 1 # Méthode 2 : Incrémenter directement la variable maVariable = 1 maVariable += 1</code></pre> <p> </p> <h4>Permutation de variable</h4> <pre><code class="language-python">>>> a = 5 >>> b = 32 >>> a,b = b,a # permutation >>> a 32 >>> b 5 >>></code></pre> <p> </p> <h4>Affecter la même valeur à plusieurs variables</h4> <pre><code class="language-python">>>> x = y = 3 >>> x 3 >>> y 3 >>></code></pre> <p> </p> <h2>Les fonctions</h2> <p>Syntaxe d'une fonction :</p> <pre><code class="language-python">nom_de_la_fonction(parametre_1,parametre_2,…,parametre_n)</code></pre> <p> </p> <h3>Fonctions de base</h3> <ul> <li>La fonction <strong>type</strong><br>Cette fonction permet de retourner le type d'une variable.</li> </ul> <pre><code class="language-python">a=3 type(a) # retourne <class 'int'></code></pre> <p> </p> <ul> <li>La fonction <strong>print</strong><br>Cette fonction ne sert uniquement qu'à afficher du texte ou une variable. Contrairement à la console qui est capable d'afficher une variable sans avoir à appeler cette fonction, sur un <strong>IDE</strong> vous serez obligé de vous en servir.</li> </ul> <pre><code class="language-python">>>> a = 3 >>> print(a) >>> a = a + 3 >>> b = a - 2 >>> print("a =", a, "et b =", b)</code></pre> <p> </p> <ul> <li>La fonction <strong>input</strong><br>Cette fonction permet de récupérer la saisie d'un utilisateur.</li> </ul> <pre><code class="language-python">choix = input("Faite votre choix : ")</code></pre> <p> </p> <p>Par défaut, la valeur sera une chaine de caractères. Pour la convertir en entier, on peut utiliser ceci :</p> <pre><code class="language-python">annee = input("Saisir une annee : ") annee = int(annee)</code></pre> <p> </p> <h1>Structures conditionnelles</h1> <h2>IF</h2> <p>La structure conditionnelle <strong>IF</strong> permet de faire un <strong>choix</strong>. Cela permet de rendre le code <i>intelligent</i>.<br>Dans un langage courant, cela donnerait ceci :</p> <pre><code class="language-plaintext">Si <réfrigérateur_vide = 1> Alors Afficher "Faire des courses" Fin si</code></pre> <p>En python, cela donnerait :</p> <pre><code class="language-python">refrigerateur_vide = 1 if refrigerateur_vide=1: print "Faire des courses"</code></pre> <p> </p> <blockquote> <p><strong>Attention :</strong> Dans d'autres langages de programmation tel que le <strong>C#</strong>, la fonction est délimitée par <strong>{}</strong>. En python, la fonction commence par <strong>:</strong> et c'est l'indentation qui délimite.</p> </blockquote> <p><i>Démonstration :</i></p> <pre><code class="language-python">refrigerateur_vide = 1 if refrigerateur_vide=1: #Je débute le IF print "Aller faire des courses" # Je suis dans le IF print "Je suis encore de le IF" print "Ici aussi" print "Ici non, mon IF est terminé"</code></pre> <p> </p> <h2>IF ELSE</h2> <p>Je peux également grâce au <strong>ELSE</strong> définir une action si ma condition est fausse.</p> <pre><code class="language-python">refrigerateur_vide = 1 if refrigerateur_vide=1: # Si le frigo est vide, alors ... print "Faire des courses" else: # Sinon ... print "Ne pas faire de courses"</code></pre> <p> </p> <h2>ELIF</h2> <p>Cette condition permet d'avoir <strong>plusieurs conditions</strong> dans une clause IF.</p> <pre><code class="language-python">refrigerateur_vide = 1 if refrigerateur_vide=1: # Si le frigo est vide, alors ... print "Faire des courses" elif refrigerateur_vide=0.5: # Si le frigo est presque vide, alors ... print "Faire de petites courses" else: # Sinon ... print "Ne pas faire de courses"</code></pre> <p> </p> <h2>Opérateurs de comparaison</h2> <figure class="table"> <table style="background-color:rgb(255, 255, 255);"> <thead> <tr> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Opérateur</strong></th> <th style="background-color:rgb(239, 241, 243);border-bottom:2px solid rgb(158, 158, 158);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;"><strong>Signification</strong></th> </tr> </thead> <tbody> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Strictement inférieur à</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;">></td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Strictement supérieur à</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;"><=</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Inférieur ou égal à</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;">>=</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Supérieur ou égal à</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;">==</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Égal à</td> </tr> <tr> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;text-align:center;">!=</td> <td style="border-bottom:1px solid rgb(238, 238, 238);border-left:1px solid rgb(207, 216, 220);border-right:1px solid rgb(207, 216, 220);border-top:1px solid rgb(207, 216, 220);padding:0.75rem;">Différent de</td> </tr> </tbody> </table> </figure> <blockquote> <p><strong>Attention :</strong> Pour tester l'égalité de deux valeurs, on utilise <strong>==</strong> et non <strong>=</strong> qui lui sert à l'affectation de valeurs</p> </blockquote> <blockquote> <p><strong>Info :</strong> Une condition renvoie uniquement deux valeurs : <strong>True</strong> ou <strong>False</strong> (vrai ou faux). Si le test est correcte, il renverra <strong>True</strong>, sinon <strong>False</strong>.</p> </blockquote> <p> </p> <h2>Plusieurs conditions pour une clause IF</h2> <p>Si un test à besoin de plusieurs conditions pour être vrai, on peut combiner plusieurs conditions pour une seule clause IF.</p> <pre><code class="language-python">permis=False majeur=True if permis==True and majeur == True: # Pour que je puisse conduire, il faut que j'ai mon permis et que je sois majeur print "Je peux conduire" else: print "Je ne peux pas conduire"</code></pre> <p> </p> <h1>Les boucles</h1> <h2>La boucle <strong>WHILE</strong></h2> <p>La boucle <strong>while</strong> (ou tant que) répète une série d'instructions tant qu'une condition n'est pas vraie.<br>Syntaxe :</p> <pre><code class="language-python">while condition: instruction1 instruction2 ...</code></pre> <p><i>Exemple : Je veux répéter une instruction tant que i n'est pas égal à 10 :</i></p> <pre><code class="language-python">i = 0 while 1 != 10: print ("i ne vaut pas 10") i+=1</code></pre> <p> </p> <blockquote> <p><strong>Attention</strong> : Il ne faut pas oublier d'incrémenter le compteur, sinon la boucle sera infinie !</p> </blockquote> <p> </p> <h1>Fonctions avancées</h1> <h2>Le constructeur</h2> <p>Un constructeur est une méthode spéciale d'une classe qui permet de construire un objet, de lui donner des attributs.</p> <p>Le nom de cette méthode est “ __init__ ” et prend en premier argument “ self ”, qui représente l'objet courant, qui est cours de création.</p> <p><i>Exemple : je crée un constructeur permettant de définir une personne </i></p> <pre><code class="language-python">class People: def __init__(self,firstname,lastname,age): self.firstname = firstname self.lastname = lastname self.age = age</code></pre> <p>Notre fonction init demande 3 paramètres, “ self ” étant un paramètre spécial. </p> <p>Grâce à ce constructeur il ne reste qu'à créer des objets : </p> <pre><code class="language-python">>>> chuck = People("Chuck","Norris",81)</code></pre> <p>L'objet “chuck” a été créé, on peut désormais accéder à ses différents attributs, les lire et les modifier.</p> <pre><code class="language-python">>>> chuck.firstname 'Chuck' >>> chuck.firstname = "Chucky" >>> chuck.firstname 'Chucky'</code></pre> <h2>Le représentateur</h2> <p>Reprenons l'exemple précédent. Lorsque l'on souhaite afficher notre objet, la valeur retournée n'est pas tout à fait celle attendue.</p> <pre><code class="language-python">>>> chuck <__main__.People object at 0x03C12820></code></pre> <p>Nous allons donc utiliser un représentateur pour mettre en forme l'objet.</p> <p>Cette méthode se définit “ __repr__ ”.</p> <pre><code class="language-python">class People: def __init__(self,firstname,lastname,age): self.firstname = firstname self.lastname = lastname self.age = age def __repr__(self): return "Nom : %s , Prenom : %s , Age : %s" % (self.lastname, self.firstname, self.age)</code></pre> <p> </p> <pre><code class="language-python">>>> repr(chuck) 'Nom : Norris , Prenom : Chuck , Age : 81'</code></pre> <h2>Le décorateur</h2> <p>Le décorateur est une fonction permettant de modifier le comportement d'autres fonctions, évitant la répétition de code. Il est appelé par “ @nom_décoraeur ”.</p> <pre><code class="language-python">def title_decorator(function): def wrapper(*args, **kwargs): print("*"*30) print("-"*30) function(*args, **kwargs) print("-"*30) print("*"*30) return wrapper @title_decorator def title(titre): print(titre) >>> titre = "Ceci est mon texte décoré" >>> title(titre) ****************************** ------------------------------ Ceci est mon texte décoré ------------------------------ ******************************</code></pre> <p>Ce décorateur permet simplement de mettre en forme un titre. Mais le décorateur, critiqué pour son nom ne définissant pas assez clairement sa fonction, peut avoir bien d'autres usages.</p> <p>Par exemple, dans le cadre du <u>développement web</u>, les décorateurs sont très utilisés. Typiquement, pour les pages nécessitant une authentification, le décorateur “ @login_required ” du framework Django est très utile.</p> <pre><code class="language-python">from django.contrib.auth.decorators import login_required @login_required def my_page(request): ...</code></pre> <p>Tout comme “ @login_required ”, beaucoup de décorateurs sont déjà développés, nécessitant un simple import.</p>