Python
Introduction
[Python}(https://www.python.org/){target="_blank} est un langage de programmation interprété. Ainsi, il est indépendant de la machine tant que vous pouvez installer python sur celle-ci. Par contre, vous devez installer python. Il peut servir pour faire de la data science, du web, des scripts pour les administrateurs, ... Bref, il est assez polyvalent. En tant que langage interprété, (et non compilé), il a des performances en retrait par rapport à du C par exemple. Il a comme avantage d'être simple, et relativement intuitif. Pour faire un script python, crée un fichier texte avec votre éditeur favori (extension .pi en général). Pour lancer le script :
On va voir les objets de base de python, les fonctions simples de python, puis la gestion des bibliothèques et des environnements python.Objets de base
Les Variables
Les variables servent à stocker des valeurs dans la mémoire vive. On les déclare simplement avec un nom de variable, un signe égal, puis la valeur. Exemple :
phrase = "Hello world python"
version = 3
print(phrase,version)
print("Le type de phrase est" ,type(phrase))
print ("le type de version est" ,type(version))
version = float(version)
print("le nouveau type de version est ", type(version))
En testant ce script vous pouvez observer que vous pouvez changer de type de variable en cours de programme. Les différents type en python sont : - Bool : un 0 ou 1, vrais faux - int : nombre entier - float : nombre flottant à virgule - str : string ou chaîne de caractère
Les Listes, les tuples
Les Listes
Une liste est une liste de variables ou d'autres objets. On la déclare entre []. On peut y placer des nombres, des chaînes de caractères , ... Et même des listes, qui contiennent des listes, qui contiennent des listes, qui contiennent ... Je préfère la pratique donc script d'exemple :
# Creation de la liste
ma_liste = [1,2,3,4,"Leeloo",6]
print("la liste complete : ",ma_liste)
print("le premier element est ", ma_liste[0])
print("Le cinquième élément est ",ma_liste[4])
print("la liste contient", len(ma_liste), "éléments")
#ajout suppression
ma_liste.append(7)
print("la liste complete : ",ma_liste)
print("la liste contient maintenant", len(ma_liste),"éléments")
ma_liste.remove(7)
print("la liste contient maintenant", len(ma_liste),"éléments")
print("la liste complete : ",ma_liste)
ma_liste.pop(4)
Les listes contiennent des méthodes pour rajouter des éléments, ou en enlever. Il existe plein de fonctions sur les listes que vous pouvait trouver la doc.
Pour information : les chaînes de caractères sont une liste un peu spéciale.
Les Tuples
Les tuples se déclarent entre ().
Les tuples se comportent comme des listes. Sauf que l'on ne peut pas les modifier. Elles sont dites immuables. Par contre elles sont plus légères en mémoire, et plus rapides.
À vous de choisir entre la vitesse et l'adaptabilité.
Les dictionnaires
Les dictionnaires se déclarent entre {}.
Il faut les voir comme un annuaire ou un index selon moi. Exemple :
# Creation du dico
mes_choix = {"tux":"un manchot","d":"la reponse d","le sens de la vie":42,"sarah connor":"oui c'est moi"}
print (mes_choix)
print(mes_choix["tux"])
Vous pouvez essayer avec d'autres clés.("tux" est une clé ici comme "d" ou "sarah connor"). Vous avez une clé, en entrant la clé, le dictionnaire vous donne une valeur. Vous trouverez les dictionnaires pour faires des conditions multiples (le switch étant arrivé avec python 3.10). Mais il peut être utile pour par exemple traduire des couleurs. Exemple :
couleurs={'blue' : '#0000FF' , 'red' : '#FF0000' , 'green' : '#0000FF', "taupe" : "it an animal not a fucking color"}
Conditions, Boucles, Fonctions
Le scripts commence en haut et finit en bas. Mais quelquefois, il est intéressant de changer les instructions ou de les répéter. On utilise pour cela les conditions, les boucles et les fonctions. Il faut bien comprendre que python fonctionne grâce à l'indexation du code.
Conditions
if elif else
Let's script :
# Creation du choix
ailes=True
miaou=False
if ailes:
print("c'est un pingouin ou un oiseau")
elif miaou:
print("c'est un chat")
else:
print("c'est un chien")
On peut changer l'état des ailes, du miaou. En fonction, on va sélectionner la commande que l'on veut. On peut aussi mettre plusieurs elif en cas de besoin. Remarquer que le code est indexé, les espaces avant les print permettent à python de savoir que la commande est dans le if.
switch case
Une autre façon de faire des choix, le match ou switch case.
# Creation du choix
bruit="gnouf"
match bruit:
case "ouaf":
print("c'est un chien")
case "miaou":
print("c'est un chat")
case "cuicui":
print("c'est un oiseau")
case _:
print("c'est un pingouin")
En fonction de la valeur de bruit, on va répondre ce qu'il y a dans les cases. Si aucune case ne correspond, on utilise la case _
Boucles
On doit répéter plusieurs choses les boucles sont là.
for
C'est la boucle d'itération, par exemple sur une liste :
# Creation de la boucle avec liste
liste_ami = ["Pierre","Fatima","Ling","Ahmed","San","Julie"]
for ami in liste_ami:
print("J'invite mon ami",ami,"à mon anniversaire.")
On met le premier élément de la liste dans ami, on fait les actions, puis le deuxième ...
while
Souvent traduit par les professeurs par "tant que". Boucle de ma mère: Tant que tu n'as pas fini tes devoirs, tu n'allumes pas la console. bref lets script:
# Creation de la boucle
nb_boucle = 0
animal ="skbdkgbdk" # j'aurait pus mettre un caratere vide mais pas envie
while animal !="manchot":
nb_boucle += 1 #on incremente le nombre de boucle
print("boucle numero :",nb_boucle)
animal = input("Quel est la race de Tux? :") On pose la question
if nb_boucle > 10: # si on depasse
print("revise Linux")
break #on casse la boucle
if animal=="pingouin": # si c'est pingouin
print("Bon presque mais tu as droit à un malus")
nb_boucle +=1
continue # on redemarre la boucle
print("pas de malus")
print("nombre de reponse donnée :",nb_boucle)
Félicitation, vous avez fait votre premier jeu vidéo textuel. Vous pouvez être fier. Alors le jeu fonctionne ainsi, vous avez 10 essais, il y a une réponse malus. Le mot break vous fait sortir de la boucle. Le mot continue vous fait recommencer la boucle au début.
Fonctions
Vous êtes en train de coder, et vous remarquez que vous écriver la même chose dans le code. Par exemple : Vous faite le meme calcul plusieurs fois.
# Creation de la fonction
def calcul(a,b,c) :
i=(a+b)*c
print ("Le resultat est :",i)
return i
e=5
d=6
f=7
calcul(e,d,f)
e=1
d=1
f=1
i=calcul(e,d,f)
print("la variable i est :",i)
Le mot def permet de définir une fonction (calcul) avec des arguments (e,d,f). Il est préférable de mettre une docstring. Le commande return permets de retourner une valeur dans le programme. Le scripts exécute la fonction lors de l'appel. Une fonction peut ne pas avoir d'arguments, ni de valeurs à retourner.
Pour information, les objets complexes comme les listes, les dataframes vont être modifier par la fonctions, alors que les variables simples comme un nombre ne le seront pas. Python étant programmé en C, il envoie une copie pour les objets simples, mais il envoie un pointeur avec des objets complexes.
Recursivité
Bon, la fonction puissance existe déjà mais on va la recréer avec ce qu'on appelle la récursivité. Lets script:
# Creation de la fonction puissance
def calcul_puissance(chiffre,puissance) :
# calcul une puissance en mode recursif (que les puissance entiere positive)
if puissance == 1:
return chiffre #si puissance =0 on quitte la fonction en retournant le resultat
else:
return chiffre*calcul_puissance(chiffre,puissance-1)
chiffre,puissance = 3,3
print("resultat :", calcul_puissance(chiffre,puissance))
La fonction s'appelle elle-même. Cela permet de faire une sorte de boucle. Quelquefois, c'est plus intuitif comme méthode que des boucles. Par contre les défauts : consommation mémoire en hausse et python limite le nombre de récursivité possible, pour éviter les récursivités infinies Plus d'information ici.
Environnement, Pip et bibliothèques/modules
Python existe depuis quelques années. Des millions voir des milliards de lignes de codes ont été écrites pour diverses raisons. Il y a de fortes chances pour que la fonction que vous voulez existe déjà quelque part. Heureusement, il existe un site qui permet de chercher des paquets python : pypi.org. Dites le à un enfant de 5 à 10 ans, ça va lui faire sa journée. Python va tourner dans un environnement où il aura des paquets installés ou non. Il faut faire la différence entre l'environnement local et les environnements virtuels.
Environnement local
Divers programmes utilisent python, y compris des programmes importants sous Linux. Certaines distributions utilisent le gestionnaire par défaut pip, mais de plus en plus de distributions se servent de leurs propres gestionnaires de paquets pour plus de stabilité. Éssayer d'installer un module avec pip :
pip install yolo ✔
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.
If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Voici le message d'erreur lorsque vous essayez d'installer un paquet sur l'environnement local. Il vous demande sois de passer par le gestionnaire de paquets (pacman apt dnf) ou de créer un environnement virtuel. Vous pouvez installer les bibliothèques/modules que vous utilisez souvent en local. Par exemple installer django si vous êtes developpeur web. Mais il est plus que conseillé d'utiliser les environnements virtuels pour éviter des conflits avec les programmes systèmes.
Environnement virtuel
Pour créer un environnement virtuel, c'est relativement facile. Aller dans un dossier où vous débuter un nouveau projet python et taper :
Pour activer l'environnement virtuel, taper :
Maintenant, vous pouvez utiliser pip pour installer vos modules.Pip
Les commandes principales de pip:
- pip install Nom_du_paquet : installe le paquet
- pip uninstal Nom_du_paquet : désinstalle le paquet
- pip freeze : liste les paquets installés
- pip freeze > requirements.txt : crée un fichier requirements.txt avec la liste de tous les paquets installés
- pip install -r requirements.txt : installe les paquets listés dans requirements.txt
Donc, avec ces simples commandes, vous pouvez débuter un projet, mettre le fichier requirements.txt dans un repo git. Un utilisateur pourra installer et tester votre programme grâce à la création d'environnement virtuels et à pip.
Mise à jour pip
Pour mettre à jour pip,il suffit de taper
Pour mettre à jour tous les paquets de pip :
Tester votre projet et mettez à jour requirements.txt
Utiliser les modules
Vous avez installé plein de modules, comment on les importe ? Tout simplement avec la commande imports. Par exemple :
Ensuite, vous pouvez utiliser la bibliothèque pandas dans votre code (si vous l'avez installé avec pip avant bien entendu). Par exemple pour créer un dataframe
Écrire pandas est trop long ? Importer la bibliothèque comme ça :
Maintenant, vous pouvez écrire :
Vous n'avez besoin que de la fonction DataFrame ? Pas de soucis, écrivez ceci :
Création du Dataframe :
Waning
Une fausse bonne idée : from pandas import *
Vous importez tout pandas sans le namespace. Du coup, vous n'avez plus besoin de taper pandas.fonction ou pd.fonction. MAIS imaginer que vous importer une autre bibliothèque et que cette bibliothèque à un nom de fonction identique à celle de pandas. Pour en avoir fait l'expérience, bon courage pour tout déboguer.
Modules perso
Créer un dossier, créer dans celui-ci un fichier __init__.py
et un fichier mesfonctions.py
.
Et importer le avec :
comme un modules.
Conclusion
Avec ceci, vous avez juste les bases de python. De quoi vous débrouiller. Allez voir les bibliothèques et regarder la doc. Tester les différentes fonctions. Bref, éclatez-vous.