1
0
Bifurcation 0
miroir de https://github.com/PAPAMICA/Wiki-Tech.io.git synchronisé 2024-12-28 10:30:24 +01:00
Wiki-Tech.io/Scripting/Python.html
2021-05-20 15:12:13 +00:00

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">&gt;&gt;&gt; 2+3
# Le résultat sera 5
&gt;&gt;&gt; 3*3
# Le résultat sera 9</code></pre>
<p>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</p>
<h4>Permutation de variable</h4>
<pre><code class="language-python">&gt;&gt;&gt; a = 5
&gt;&gt;&gt; b = 32
&gt;&gt;&gt; a,b = b,a # permutation
&gt;&gt;&gt; a
32
&gt;&gt;&gt; b
5
&gt;&gt;&gt;</code></pre>
<p>&nbsp;</p>
<h4>Affecter la même valeur à plusieurs variables</h4>
<pre><code class="language-python">&gt;&gt;&gt; x = y = 3
&gt;&gt;&gt; x
3
&gt;&gt;&gt; y
3
&gt;&gt;&gt;</code></pre>
<p>&nbsp;</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>&nbsp;</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 &lt;class 'int'&gt;</code></pre>
<p>&nbsp;</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">&gt;&gt;&gt; a = 3
&gt;&gt;&gt; print(a)
&gt;&gt;&gt; a = a + 3
&gt;&gt;&gt; b = a - 2
&gt;&gt;&gt; print("a =", a, "et b =", b)</code></pre>
<p>&nbsp;</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>&nbsp;</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>&nbsp;</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 &lt;réfrigérateur_vide = 1&gt;
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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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;">&lt;</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;">&gt;</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;">&lt;=</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;">&gt;=</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>&nbsp;</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>&nbsp;</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>&nbsp;</p>
<blockquote>
<p><strong>Attention</strong> : Il ne faut pas oublier d'incrémenter le compteur, sinon la boucle sera infinie !</p>
</blockquote>
<p>&nbsp;</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&nbsp;</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.&nbsp;</p>
<p>Grâce à ce constructeur il ne reste qu'à créer des objets :&nbsp;</p>
<pre><code class="language-python">&gt;&gt;&gt; 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">&gt;&gt;&gt; chuck.firstname
'Chuck'
&gt;&gt;&gt; chuck.firstname = "Chucky"
&gt;&gt;&gt; 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">&gt;&gt;&gt; chuck
&lt;__main__.People object at 0x03C12820&gt;</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>&nbsp;</p>
<pre><code class="language-python">&gt;&gt;&gt; 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)
&gt;&gt;&gt; titre = "Ceci est mon texte décoré"
&gt;&gt;&gt; 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>