Utilisation de l'éditeur VSCodium
Aide sur le site de F.Chambon, plus complète si vous en avez besoin.
Pour commencer, installez les extensions :
- French Language Pack for Visual Studio Code (recherchez
french
dans le menu des extensions) - l'extension Python de microsoft (ms-python)
- Pyright, pour tester la vérification statique du typage en python
Ces extensions sont installées à l'intérieur de votre répertoire personnel dans le dossier caché ~/.vscode-oss
,
elles resteront donc disponibles si vous utilisez le même ordinateur au lycée.
Pour vérifier que tout va bien
Créez un dossier et ouvrez le dans codium.
Par exemple avec les commandes suivantes dans le terminal :
cd
mkdir test_codium
cd test_codium
codium .
Info
La commande codium REPERTOIRE
ouvre codium avec REPERTOIRE
comme espace de travail, et .
est le raccourci dans le terminal pour indiquer la position actuelle.
Créez un nouveau fichier hello.py
, écrivez le code python qui affiche hello world !
et exécutez-le.
Inconvénients du typage dynamique en python
En python, les variables dans le code n'ont pas de type. C'est seulement les valeurs que prennent ces variables à l'exécution qui ont un type, et on aura une erreur si une opération est faite sur des valeurs qui n'ont pas des types compatibles.
On parle donc de typage dynamique (au moment de l'exécution) par opposition aux langages à typage statique qui vérifient le typage avant d'exécuter le programme.
Un désavantage est que dans ce code :
def fonction_presque_jamais_utilisee():
return 1 + "3"
# etc etc
L'erreur commise dans la fonction ne sera pas détectée tant qu'elle n'aura pas été exécutée, alors qu'on aurait pu le voir facilement en regardant le code.
Ou encore dans ce code là :
def double(x):
return 2*x
valeur = input()
print(double(valeur))
On pourrait vouloir automatiquement détecter que valeur va être de type str, et que ça va poser problème de l'envoyer à la fonction double qui s'attend à un nombre.
Indications de type en python
Même si ce n'est jamais obligatoire, il est possible d'utiliser d'autres logiciels pour rajouter une vérification statique du typage en python et détecter certaines erreurs plus rapidement.
Pour cela, python permet d'ajouter des indications de type dans le code, au moment où on crée les variables et les fonctions.
Pour une variable on ajoute :
et le type après son nom :
x : int = 3
Et pour une fonction on indique le type des paramètres avec :
et le type de la valeur de
retour avec ->
entre les parenthèses et les deux-points finaux:
def est_positif(x : int) -> bool:
return (x > 0)
Info
- À partir de la version 3.9 de python, il est possible d'utiliser
x : list[int]
plutôt quex : list
pour préciser le type des valeurs contenues dans la liste. - Pour un dictionnaire on pourra écrire
d : dict[str,int]
pour indiquer que les clés seront de typestr
, et les valeurs de typeint
. - À partir de python 3.10, on peut utiliser
|
pour indiquer plusieurs types possibles, par exempledef addition(x : int | float, y : int | float) -> int | float
pour une fonction qui prend et renvoie soit desint
soit desfloat
- Dans les versions précédentes, on pouvait le faire en utilisant le module
typing
Par défaut, ce ne sont que des indications que python ne vérifie pas.
Mais même sans les vérifier, c'est une bonne pratique de mettre ces indications de type au moins pour les fonctions. Cela permet en lisant le code de savoir tout de suite les types attendus en paramètres et renvoyés en valeur de retour.
Certains éditeur de code peuvent afficher ces informations quand on utilise la fonction, par exemple dans VSCodium :
On sait immédiatement en tapant forward
que le paramètre attendu est de type float
et que la fonction ne renverra rien (None
).
Vérification statique
Python ne fera pas de vérification automatique des indications de type, mais on peut utiliser d'autres logiciels externes pour le faire. Les principaux sont mypy (projet collaboratif indépendant), pytype (développé par google), pycheck (par facebook), et pyright (par microsoft).
On utilisera ici l'extension pyright de codium, mais il en existe aussi une pour mypy.
exercice 1
Commencez par copier ce code dans codium, et ajoutez les indications de type pour toutes les variables et fonctions :
def triple(x):
return 3*x
reponse = triple(14)
print(reponse)
Vérifiez que vous n'avez pas d'erreur, mais que si vous rajouter la ligne print(triple("zero"))
pyright vous signale une erreur avant même l'exécution.
exercice 2
Ajoutez les indications de type pour le paramètre tableau, la valeur de retour de la fonction et pour les variables locales n et resultat. Si vous vous trompez de type, l'erreur sera probablement détectée par l'extension pyright.
def sommes_partielles(tableau):
n = len(tableau)
resultat = [ 0 for i in range(n)]
resultat[0] = tableau[0]
for i in range(1, len(tableau)):
resultat[i] = resultat[i-1] + tableau[i]
return resultat
print(sommes_partielles([1,2,3]))
print(sommes_partielles(12)) # cette ligne devrait aussi provoquer une erreur de type