miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-11-18 15:30:43 +01:00
356 lignes
21 Kio
HTML
356 lignes
21 Kio
HTML
<!--
|
|
title: Python
|
|
description:
|
|
published: true
|
|
date: 2021-05-20T14:35:33.423Z
|
|
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>
|