2. Mode d'emploi de l'interpréteur Python
*****************************************


2.1. Lancement de l'interpréteur
================================

En général, vous trouvez l'interpréteur Python sous
"/usr/local/bin/python3.9" sur les machines où il est disponible ;
ajoutez "/usr/local/bin" au chemin de recherche de votre shell Unix
afin de pouvoir le lancer en tapant la commande :

   python3.9

dans le shell. [1] Le choix du répertoire où se trouve l'interpréteur
étant une option d'installation, d'autres chemins sont possibles ;
voyez avec votre gourou Python local ou votre administrateur système
(par exemple, "/usr/local/python" est un endroit courant).

Sur les machines Windows sur lesquelles vous avez installé Python à
partir du Microsoft Store, la commande "python3.9" est disponible. Si
le lanceur py.exe est installé, vous pouvez utiliser la commande "py".
Voir Digression : Définition des variables d'environnement pour
d'autres façons de lancer Python.

Tapez un caractère de fin de fichier ("Ctrl-D" sous Unix, "Ctrl-Z"
sous Windows) dans une invite de commande primaire provoque la
fermeture de l'interpréteur avec un code de sortie nul. Si cela ne
fonctionne pas, vous pouvez fermer l'interpréteur en tapant la
commande "quit()".

Les fonctionnalités d'édition de l'interpréteur comprennent l'édition
interactive, la substitution depuis l'historique et la complétion sur
les systèmes qui gèrent la bibliothèque GNU Readline. Un moyen rapide
de tester comment est gérée l'édition de la ligne de commande, c'est
de taper "Control-P" à la première invite de commande que vous
rencontrez. Si cela bipe, vous disposez de l'édition de la ligne de
commande ; lisez l'appendice Édition interactive des entrées et
substitution d'historique pour une introduction aux touches. Si rien
ne semble se produire ou si "^P" s'affiche, l'édition de la ligne de
commande n'est pas disponible ; vous serez seulement en mesure
d'utiliser la touche retour arrière pour supprimer des caractères de
la ligne courante.

L'interpréteur fonctionne de façon similaire au shell Unix : lorsqu'il
est appelé avec l'entrée standard connectée à un périphérique tty, il
lit et exécute les commandes de façon interactive ; lorsqu'il est
appelé avec un nom de fichier en argument ou avec un fichier comme
entrée standard, il lit et exécute un *script* depuis ce fichier.

Une autre façon de lancer l'interpréteur est "python -c commande [arg]
...". Cela exécute les instructions de *commande* de façon analogue à
l'option "-c" du shell. Parce que les instructions Python contiennent
souvent des espaces et d'autres caractères spéciaux pour le shell, il
est généralement conseillé de mettre *commande* entre guillemets
simples.

Certains modules Python sont aussi utiles en tant que scripts. Ils
peuvent être appelés avec "python -m module [arg] ..." qui exécute le
fichier source de *module* comme si vous aviez tapé son nom complet
dans la ligne de commande.

Quand un fichier de script est utilisé, il est parfois utile de
pouvoir lancer le script puis d'entrer dans le mode interactif après
coup. Cela est possible en passant "-i" avant le script.

Tous les paramètres utilisables en ligne de commande sont documentés
dans Ligne de commande et environnement.


2.1.1. Passage d'arguments
--------------------------

Lorsqu'ils sont connus de l'interpréteur, le nom du script et les
arguments additionnels sont représentés sous forme d'une liste
assignée à la variable "argv" du module "sys". Vous pouvez y accéder
en exécutant "import sys". La liste contient au minimum un élément ;
quand aucun script ni aucun argument n'est donné, "sys.argv[0]" est
une chaine vide. Quand "'-'" (qui représente l'entrée standard) est
passé comme nom de script, "sys.argv[0]" contient "'-'". Quand "-c"
*commande* est utilisé, "sys.argv[0]" contient "'-c'". Enfin, quand
"-m" *module* est utilisé, le nom complet du module est assigné à
"sys.argv[0]". Les options trouvées après "-c" *commande* ou "-m"
*module* ne sont pas lues comme options de l'interpréteur Python mais
laissées dans "sys.argv" pour être utilisées par le module ou la
commande.


2.1.2. Mode interactif
----------------------

Lorsque des commandes sont lues depuis un tty, l'interpréteur est dit
être en *mode interactif*. Dans ce mode, il demande la commande
suivante avec le *prompt primaire*, en général trois signes plus-
grand-que (">>>") ; pour les lignes de continuation, il affiche le
*prompt secondaire*, par défaut trois points ("..."). L'interpréteur
affiche un message de bienvenue indiquant son numéro de version et une
notice de copyright avant d'afficher le premier prompt :

   $ python3.9
   Python 3.9 (default, June 4 2019, 09:25:04)
   [GCC 4.8.2] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>>

Les lignes de continuation sont nécessaires pour entrer une
construction multi-lignes. Par exemple, regardez cette instruction
"if" :

   >>> the_world_is_flat = True
   >>> if the_world_is_flat:
   ...     print("Be careful not to fall off!")
   ...
   Be careful not to fall off!

Pour plus d'informations sur le mode interactif, voir Mode interactif.


2.2. L'interpréteur et son environnement
========================================


2.2.1. Encodage du code source
------------------------------

Par défaut, Python considère que ses fichiers sources sont encodés en
UTF-8. Dans cet encodage, les caractères de la plupart des langues
peuvent être utilisés à la fois dans les chaînes de caractères,
identifiants et commentaires. Notez que la bibliothèque standard
n'utilise que des caractères ASCII dans ses identifiants et que nous
considérons que c'est une bonne habitude que tout code portable
devrait suivre. Pour afficher correctement tous ces caractères, votre
éditeur doit reconnaître que le fichier est en UTF-8 et utiliser une
police qui comprend tous les caractères utilisés dans le fichier.

Pour annoncer un encodage différent de l'encodage par défaut, une
ligne de commentaire particulière doit être ajoutée en tant que
*première* ligne du fichier. Sa syntaxe est la suivante :

   # -*- coding: encoding -*-

où *encoding* est un des "codecs" géré par Python.

Par exemple, pour déclarer un encodage *Windows-1252*, la première
ligne de votre code source doit être :

   # -*- coding: cp1252 -*-

Une exception à la règle *première ligne* est lorsque la première
ligne est un shebang UNIX. Dans ce cas, la déclaration de l'encodage
doit être placée sur la deuxième ligne du fichier. Par exemple :

   #!/usr/bin/env python3
   # -*- coding: cp1252 -*-

-[ Notes ]-

[1] Sous Unix, par défaut, l'interpréteur Python 3.x n'est pas
    installé sous le nom de "python" afin de ne pas entrer en conflit
    avec une éventuelle installation de Python 2.x.
