# Programmation Python/Éditeurs
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]

## Utilité des éditeurs

Si le mode interactif a permis d'apprendre très rapidement les bases du langage, par expérimentation directe, cette façon de faire présente toutefois un gros inconvénient : toutes les séquences d'instructions écrites disparaissent irrémédiablement après fermeture de l'interpréteur. Il convient donc de sauvegarder les programmes dans des fichiers, sur une mémoire morte, de manière à pouvoir les retravailler par étapes successives, les transférer sur d'autres machines, etc.
Pour ce faire, il est déconseillé d'utiliser de simples éditeurs de texte tels que Edit, Notepad ou WordPad, car ils ne sont pas ANSI "intelligent", ni munis de la fonction de coloration syntaxique du code source pour Python, qui aide à relire rapidement et à éviter les fautes de syntaxe. De plus, les éditeurs munis de la complétion automatique aident à taper le code source plus rapidement et en évitant les fautes de frappe.
Par conséquent, il vaut mieux en utiliser des spécialisés en programmation, appelés environnement de développement (EDI). Par exemple :
* PyCharm
* Visual Studio Code
* SciTE
* DrPython
* Eclipse
* NetBeans
* NEdit
* PythonWin
* Python scripter : auto-complétion, navigation entre classe avec 'CTRL', génération et exécution des tests unitaires, debugger...

## PyCharm

PyCharm est est un environnement de développement intégré utilisé pour programmer en Python.

### Installation

Développé par l'entreprise JetBrains, PyCharm est un logiciel multi-plateforme qui fonctionne sous Windows, Mac OS X et Linux.
Il est décliné en édition professionnelle, diffusé sous licence propriétaire, et en édition communautaire diffusée sous licence Apache (donc 100 % gratuite), téléchargeable depuis le site officiel.

### Configuration

Après installation il faut choisir l'interpréteur Python, dont la version déterminera les conseils fournis par l'IDE. Ils peuvent provenir de quatre environnements :
* Virtualenv
* Conda
* System Interpreter
* Pipenv
Si le programme doit ensuite tourner sur la machine hôte (sans IDE), le mieux est de prendre "System Interpreter".

### Utilisation

PyCharm permet l'analyse de code et contient un débogueur graphique.
Il permet également la gestion des tests unitaires, l'intégration de logiciel de gestion de versions, et supporte le développement web avec Django.

### Références

* ↑ https://netbeans.org/downloads/index.html
* ↑ https://wiki.python.org/moin/PythonWin
* ↑ http://www.mmm-experts.com/Downloads.aspx
* ↑ https://www.jetbrains.com/fr-fr/pycharm/download/

## Visual Studio Code

Visual Studio Code (ou simplement nommé "code") est un logiciel éditeur de texte graphique, gratuit fonctionnant sous Windows. Il est capable de prendre en charge le débogage, d'effectuer la coloration syntaxique, l'auto-complétion et surtout le pliage de code (code folding), c'est à dire le masquage à volonté de différents blocs d'instructions (contenu d'une classe, d'une fonction, d'une boucle, etc.) : cette fonctionnalité se révèle extrêmement pratique lorsque vos scripts commencent à s'allonger... Il intègre également la gestion de version (notamment Git et SVN), une fenêtre de terminal ainsi qu'un raccourci pour lancement des scripts.
Cet éditeur est disponible pour Windows sur https://code.visualstudio.com .

### Langages supportés

Visual Studio Code prend immédiatement en charge presque tous les principaux langages informatiques.
Plusieurs d'entre eux sont inclus par défaut, comme HTML et CSS, et aussi JavaScript, TypeScript, Java, PHP, mais d'autres extensions de langage peuvent être trouvées et téléchargées gratuitement à partir de VS Code Marketplace.

### Utilisation
#### Édition de lignes

L'éditeur de code possède des raccourcis clavier pratiques rendant l'édition des lignes de code plus rapide :
| Touches | Touches | Effet |
| Ctrl | ↵ Enter | Ajouter une nouvelle ligne après la ligne courante. |
| Ctrl | ↑/↓ | Faire défiler la vue vers le haut/le bas. |
| Alt | ↑/↓ | Déplacer la ligne courante ou les lignes sélectionnées vers le haut/le bas dans le texte. |
| AltShift | ↑/↓ | Dupliquer la ligne courante ou les lignes sélectionnées vers le haut/le bas. |
| Ctrl | : | Commenter/Décommenter la ligne courante. |

### Références

* ↑ https://code.visualstudio.com/docs/editor/versioncontrol
* ↑ https://marketplace.visualstudio.com/vscode

## SciTE

SciTE (acronyme de Scintilla Text Editor) est un logiciel éditeur de texte graphique, gratuit et open source fonctionnant sous les environnements Linux et Windows. Il est capable d'effectuer la coloration syntaxique, l'auto-complétion et surtout le pliage de code (code folding), c'est à dire le masquage à volonté de différents blocs d'instructions (contenu d'une classe, d'une fonction, d'une boucle, etc.) : cette fonctionnalité se révèle extrêmement pratique lorsque vos scripts commencent à s'allonger... Il intègre également une fenêtre de terminal ainsi qu'un raccourci pour lancement des scripts.
Cet éditeur est disponible pour Windows et pour Linux sur http://www.scintilla.org/SciTE.html.
Scintilla étant une plateforme d'édition de texte qui propose par exemple des outils spécifiques pour corriger du code écrit avec SciTE. Ces deux logiciels sont principalement l'œuvre de leur créateur Neil Hodgson, qui les a placés sous une licence libre peu connue, l'Historical Permission Notice and Disclaimer.

### Langages supportés

Les langages compris par SciTE. Il est actuellement capable d'appliquer une syntaxe de style à ces langages :
Liste
* Ada
* ASN.1 MIB definition files*
* APDL
* Assembler (NASM, MASM)
* AutoIt*
* Avenue*
* Batch files (MS-DOS)
* Baan*
* Bash*
* BlitzBasic*
* Bullant*
* C/C++/C#*
* Clarion*
* conf (Apache)*
* CSound*
* CSS*
* diff files*
* E-Script*
* Eiffel*
* Erlang*
* Flagship (Clipper / XBase)*
* Flash (ActionScript)*
* Fortran*
* Forth*
* Haskell
* HTML*
* HTML with embedded JavaScript, VBScript, PHP and ASP*
* Gui4Cli*
* IDL - both MSIDL and XPIDL*
* INI, properties* and similar
* InnoSetup*
* Java*
* JavaScript*
* LISP*
* LOT*
* Lout*
* Lua*
* Make
* Matlab*
* Metapost
* MMIXAL
* MSSQL
* nnCron
* NSIS*
* Objective Caml*
* Opal
* Octave*
* Pascal/Delphi*
* Perl, most of it except for some ambiguous cases*
* PostScript*
* POV-Ray*
* PowerBasic*
* PureBasic*
* Python*
* Rebol*
* Ruby*
* Scheme*
* scriptol*
* Specman E*
* Spice
* Smalltalk
* SQL and PLSQL
* TADS3*
* TeX and LaTeX
* Tcl/Tk*
* VB and VBScript*
* Verilog*
* VHDL*
* XML*
* YAML*
Les langages marqués par un astérisque doivent être vérifiés pour fonctionner pour un nombre important de personnes.

### Installation sous Linux

L'éditeur Scintilla fait dorénavant partie des paquetages fournis d'office avec les distributions récentes de Linux. Sinon, téléchargez-le au départ du site web mentionné ci-dessus. Sinon :
* téléchargez l'archive gscite***.tgz puis l'extraire avec tar ;
* installez l'exécutable SciTE dans /usr/local/bin ;
* installez tout le reste (fichiers *.properties) dans /usr/share/scite (et non /usr/share/gscite !).

### Installation sous Windows

* Téléchargez l'archive wscite***.zip puis l'extraire dans \Program files ;
* installez une icône de lancement pour l'exécutable SciTe.exe.

### Pour les deux versions

On peut personnaliser beaucoup de choses (polices, etc.) en éditant le fichier des propriétés globales (Menu Options → Open global options file).
Par exemple, pour activer de jolis symboles pour replier/déplier, dans la marge de gauche :
* fold.symbols = 2 # pour de belles icônes + et - cerclées
* fold.on.open = 1 # ainsi tout est plié au départ
* margin.width =0 # pour supprimer la marge inutile
Pour forcer le remplacement automatique des tabulations par des groupes de 4 espaces :
* tabsize = 4
* indent.size = 4
* use.tabs = 0

### Traductions

La traduction doit être téléchargée, renommée en "locale.properties" et déplacée dans le même répertoire que les propriétés globales.
Il faut donc passer en root :
et aller dans le répertoire par défaut :

### Utilisation
## DrPython

DrPython est un environnement d'exploration pour le langage Python. (Il y a d'autres logiciels comme celui-ci pour les autres langues, par exemple DrJava et DrScheme.). DrPython est un logiciel Python, donc il faut installer Python d'abord.
Téléchargez les éléments suivants :
- Python lui-même : du site web Python. L'installateur est disponible en cliquant "Windows installer", ou ici pour Python 2.7.
- La version de la bibliothèque wxPython correspondant à la version de Python -- c'est-à-dire wxPython pour Python 2.7. En général, c'est ici : .
- DrPython; télécharger seulement le paquet du site Sourceforge ici.
Maintenant, il faut installer Python et wxPython. Pour ce faire, double-cliquez sur les fichiers que vous avez téléchargés, commençant avec python-2.7.msi. Les installations sont en anglais. Il suffit de cliquer sur «Next» plusieurs fois, mais je vais aussi essayer de traduire les écrans.
Python 2.7 :
| Anglais | Français |
| Select whether to install Python 2.7 for all users of this computer. Install for all users/Install for just me (not available on Windows Vista) | Choisissez d'installer Python 2.7 pour tout utilisateur du ordinateur. Installer pour tout utilisateur/Installer seulement pour moi (pas disponible sur Windows Vista) [Par défaut, «Installer pour tout utilisateur», est probablement le plus facile.] |
| Select destination directory. Please select a directory for the Python 2.7 files. | Choisissez le répertoire de destination. Veuillez sélectionner un dossier pour les fichiers de Python 2.7. [L'option proposée par défaut, est bien.] |
| Customize Python 2.7. Select the way you want features to be installed. | Customizez Python 2.7. Choisissez le mode d'installation que vous préférez. [Par défaut, installer tout d'un seul trait, est convenable.] |
| Please wait while the installer installs Python 2.7. This may take several minutes. | Veuillez patienter pendant que l'installateur installe Python 2.7. Cela peut prendre quelques minutes. |
| Completing the Python 2.7 installer. Special thanks to Mark Hammond, without whose years of freely shared Windows experience, Python for Windows would still be Python for DOS. Click the Finish button to exit the installer. | L'installation de Python 2.7 est terminée. Remerciements particuliers à Mark Hammond, dont les années d'expérience ont permis d'installer Python sous Windows,et non pas seulement sous DOS. Cliquez sur «Finish» pour quitter l'installation. |
Après avoir fait ça, vous allez voir dans le menu Démarrer un groupe qui s'appelle Python 2.7, et vous allez voir «IDLE (Python GUI)», «Module Docs», «Python (command line)» («Invite des commandes Python»), «Python Manuals», et «Uninstall Python» («Déinstaller Python»). Ç'est bien, mais on va continuer avec la bibliothèque wxPython.
wxPython 2.8 :
| Anglais | Français |
| Welcome to the wxPython2.8-unicode-py27 Setup Wizard. This will install wxPython 2.8.11.0 (unicode) for Python 2.7 on your computer. It is recommended that you close all other applications before continuing. Click Next to continue, or Cancel to exit Setup. | Bienvenue à l'installateur de wxPython2.8-unicode-py27. Il va installer wxPython 2.8.11.0 (unicode) pour Python 2.7 sur votre ordinateur. Il est conseillé de fermer toute autre application avant de continuer. Cliquez «Next» pour continuer, ou «Cancel» pour quitter l'installateur. [Cette procédure est commune à la plupart des installateurs.] |
| License agreement. (The full wxWindows library license.) I accept the agreement./I do not accept the agreement. | Accord de la licence [Ce qui suit est le texte complet de la licence de la bibliothèque wxWindows.] J'accepte la licence./Je n'accepte pas la licence. [On peut accepter ; la licence est très douce.] |
| Select destination location. Where should wxPython be installed? | Choisissez destination emplacement. Où wxPython devrait-il être installé ? [L'option par défaut est le meilleur choix.] |
| Select components. Which components should be installed? | Choisissez composants. Quels composants devraient être installés ? [Il y a seulement un composant à installer. L'option par défaut est parfaite.] |
| Installing. Please wait while Setup installs wxPython2.8-unicode-py27 on your computer. | Veuillez patienter pendant l'installation de wxPython2.8-unicode-py27 sur votre ordinateur. |
| Completing the wxPython Setup Wizard. Setup has finished installing wxPython on your computer. Click Finish to install Setup. View README win32.txt./Compile Python .py files to .pyc./Create batch files for tool scripts. | Termine l'installateur wxPython. L'installation de wxPython sur votre ordinateur est terminée. Cliquez «Finish» pour quitter. Afficher README win32.txt./Compiler les fichiers Python .py à .pyc./Créer fichiers pour [....]. [Décocher la première case, parce que c'est un fichier anglais, mais les autres sont utiles.] |
Vous allez voir une fenêtre noire qui va afficher un peu de texte, puis se fermer.
Maintenant, décompressez le dernier fichier que vous avez téléchargé : DrPython_3.11.3.zip. Vous allez trouver un dossier avec beaucoup de fichiers. Cherchez-en un qui s'appelle drpython. (Il y en aura au moins deux.) Double-cliquez le. Après ça vous allez voir une fenêtre qui paraît un peu comme ceci :
Félicitations ! Vous avez réussi à installer DrPython.
N.B. Il doit y avoir une façon d'installer DrPython pour qu'on puisse l'ouvrir plus facilement, par exemple en créant un raccourci, mais je ne l'ai pas encore trouvée.

## Eclipse

Eclipse est un environnement de développement intégré (EDI), générique et extensible (site officiel http://www.eclipse.org). Son système de plugins permet d'ajouter des fonctionnalités diverses.
Initialement prévu pour développer en Java, grâce aux plugins il peut maintenant également gérer des projets développés avec d'autres langages de programmation tels que :
* Le C et le C++ grâce à l'ensemble de plugins CDT (C Development Toolkit) (compilateur non intégré).
* Le Python via PyDev.
* Avant l'arrivée d'Android Studio, le développement pour Android se faisait avec Eclipse grâce à l'ensemble de plugins ADT (Android Development Toolkit).
Certains IDE sont basés sur Eclipse, et permettent par exemple le développement de logiciel embarqués pour des systèmes temps réel.

### Installation de Eclipse

La page de téléchargement d'Eclipse permet de récupérer une version déjà adaptée au langage ciblé sur http://www.eclipse.org/downloads/. Mais pour installer un plugin manuellement, il faut :
* Lancer Eclipse, puis dans le menu déroulant :Help>Software Updates>Find and Install...
* Cocher Search for new features to install, bouton Next. Bouton New Remote Site..., entrer l'adresse de téléchargement :
* Bouton Finish, choisir un miroir proche puis continuer l'installation.

### Utilisation de Eclipse

L'interface de l'IDE Eclipse est basée sur différentes perspectives. Une seule perspective n'est visible à la fois, et se compose de plusieurs vues. Exemples :
* La perspective "Java" se compose par défaut de la vue "Package Explorer", de la vue éditeur de code en Java avec un onglet par fichier ouvert, de la vue "Outline" donnant la hiérarchie des éléments composant la classe du fichier ouvert.
* La perspective "Debug" est ouverte automatiquement au lancement d'une application en mode débogage et se compose par défaut de la vue "Debug" affichant la pile d'appel, de la vue des points d'arrêt nommée "Breakpoints", de la vue éditeur de code en Java avec un onglet par fichier ouvert, de la vue "Outline" donnant la hiérarchie des éléments composant la classe du fichier ouvert.
* Deux ou plusieurs perspectives peuvent être affichées conjointement.
Chaque vue est une sous-fenêtre qui a un titre et se place dans un cadre particulier de la fenêtre de l'IDE. Les vues peuvent être déplacées à la souris par drag and drop pour changer la disposition de la perspective. Plusieurs vues peuvent partager le même cadre, auquel cas, une barre d'onglets permet de basculer entre les vues. Un double clic sur le titre d'une vue provoque l'affichage du cadre qui la contient en pleine fenêtre, réduisant les autres cadres à une icône sur les côtés. Un second double clic restaure les cadres.
Le menu "Window" permet de changer de perspective, et d'ajouter des vues à la perspective courante. Une vue peut également être retirée de la perspective affichée en utilisant la croix à droite du titre de la vue.

#### Édition de lignes

L'éditeur de code possède des raccourcis clavier pratiques rendant l'édition des lignes de code plus rapide :
| Touches | Touches | Effet |
| Shift | ↵ Enter | Ajouter une nouvelle ligne après la ligne courante. |
| Ctrl | ↑/↓ | Faire défiler la vue vers le haut/le bas. |
| CtrlShift | ↑/↓ | Déplacer le curseur sur le membre précédent/suivant de la classe. |
| Alt | ↑/↓ | Déplacer la ligne courante ou les lignes sélectionnées vers le haut/le bas dans le texte. |
| CtrlAlt | ↑/↓ | Dupliquer la ligne courante ou les lignes sélectionnées vers le haut/le bas. |
| CtrlShift | : | Commenter/Décommenter la ligne courante. |

#### Complétion de code

L'éditeur de code peut compléter automatiquement le code là où se trouve le curseur :
| Touches | Touches | Effet |
| Ctrl | Espace | Ouvrir la liste des suggestions de complétion. Une fois la suggestion choisie, la validation se fait par l'une des touches suivantes : ↵ Enter, n'ajoute rien derrière la suggestion ; Espace ou ., ajoute également le caractère produit derrière la suggestion. Toute autre touche produit le caractère sans valider (annuler la complétion). |
| AltShift | : | Complète avec la seule possibilité, ou produit un bip s'il y a plusieurs possibilités. |

#### Navigation et autres astuces

* Dans les codes sources dépassant la hauteur de fenêtre de l'éditeur, placez le pointeur de la souris sur l'accolade fermante d'un bloc pour voir apparaître un résumé du code d'ouverture du bloc en bulle d'aide. Ceci est fort utile pour vérifier quel bloc est fermé par l'accolade sans avoir à faire défiler le code.
* Placez le pointeur de la souris sur un identifiant de classe, méthode ou variable et enfoncez la touche Ctrl pour faire apparaître un lien cliquable vers la définition.
* Cliquez sur un identifiant de membre de classe pour faire apparaître toutes les occurrences d'utilisation dans le fichier : à la fois dans le texte et dans la barre de défilement. Les blocs apparaissant dans la barre de défilement sont cliquables pour faire défiler le code à la position de l’occurrence. Il y a deux couleurs distinctes pour les occurrences utilisées en lecture (accès, appel, ...) et celles utilisées en écriture (affectation).
    Il peut arriver que cela ne semble pas fonctionner car l'éditeur peut être dans un mode autre que celui par défaut. Il faut dans ce cas appuyer une ou deux fois la touche Échap pour que cela fonctionne.

### PyDev

PyDev est un plugin Eclipse pour le développement d'un projet Python (et Jython).
Il a été créé en Juillet 2003 par Aleks Totic et est maintenu depuis Octobre 2004 par Fabio Zadrozny. Il propose entre autres les fonctionnalités suivantes :
* complétion de code,
* analyse et mise en évidence de la syntaxe,
* debug

### Installation du plugin PyDev

Sous Eclipse, voici la procédure à suivre pour installer le plugin :
* Menu "Help" / "Software Updates" / "Find and install ..." / "Search for new feature to install"
* "New Remote Site..." / Name : Python Dev, URL : http://pydev.org/updates/ / Finish
Une fois le plug-in installé, il faut configurer le compilateur Python :
* Menu "Window" / "Preferences" / "PyDev" + "Interpreter Python" / "New"
Il vous faudra ensuite choisir l'exécutable python : "/usr/bin/python" sous Linux, "C:\Python\python.exe" sous Windows et valider, puis sélectionner les répertoires à inclure dans le PYTHONPATH (en cas de doute, prenez ceux qui vous sont proposés).

### Créer un projet "Hoo hoo World" avec le plugin PyDev

Sous Eclipse, une fois le plug-in installé, choisir de créer un nouveau projet
* Menu "File" / "New" / "Project"
* Sélectionner Pydev Project / "Next"
* Donner un nom et choisir la version correspondant à python (ex: 2.4).
* Valider ("Finish") : Vous devez avoir une nouvelle entrée correspondant au projet
* Clic droit sur le projet pour ajouter un nouveau module ("New" / "Pydev module")
* donner lui un nom (ex: monScript)
* saisir le code suivant dans le fichier :
* sauvegarder (CTRL + S, ou clic sur la disquette, ou menu "File" / "Save")
* exécuter : Bouton droit sur le fichier monScript / "Run as" / "Python run"
    Pour les prochaines exécutions du script, utiliser la barre d'outil (symbole lecture blanc dans un rond vert) ou CTRL + F11.

### Complétion auto

Pour voir la complétion automatique de code, utilisez CTRL + Espace.
Par exemple pour le code suivant :
si l'on place le curseur après le point, et que l'on tape CTRL + Espace, l'ensemble des méthodes de la classe String seront proposées (ex: .upper qui passe en majuscule la chaîne de caractère x).

## Lancement des scripts

Certains EDI permettent de lancer les scripts en cliquant. Toutefois d'une manière générale, il faut les exécuter en lançant en ligne de commande l'interpréteur Python, en lui fournissant comme premier argument le nom du fichier qui contient le script, voire des paramètres supplémentaires comme autres arguments.
Par exemple, si vous avez placé un script dans un fichier nommé MonScript.py, il suffira d'entrer la commande suivante dans une fenêtre de terminal (ou une invite de commande sous Windows) pour que ce script s'exécute :
ou
Par ailleurs, quand le fichier porte bien l'extension conventionnelle Python (.py), il a un icône Python et il est possible de l'exécuter simplement en cliquant sur son nom ou sur l'icône correspondante dans le gestionnaire de fichiers (c'est-à-dire l'explorateur, sous Windows, Gnome, ou Konqueror, sous KDE). En effet ces gestionnaires graphiques « savent » qu'il doivent lancer l'interpréteur Python chaque fois que leur utilisateur essaye d'ouvrir un fichier dont le nom se termine par .py (cela suppose bien entendu qu'ils aient été correctement configurés). La même convention permet en outre aux éditeurs « intelligents » de reconnaître automatiquement les scripts Python et d'adapter leur coloration syntaxique en conséquence.
Évitez cependant de choisir des noms qui risqueraient d'être déjà attribués à des modules python existants, tels que "math.py" ou "Tkinter.py".
Si vous travaillez avec IDLE sous Windows, vous pouvez lancer l'exécution du script en cours d'édition, directement à l'aide de la combinaison de touches <Ctrl-F5>.

## En-tête des fichiers

Un fichier python commence en général par deux lignes indiquant l'interpréteur utilisé et l'encodage des caractères.

### Shebang

La première ligne est le shebang qui indique le chemin de l'interpréteur Python pour exécuter le programme en ligne de commande sous Linux :
Cette ligne n'est pas nécessaire sous Windows, mais comme un programme Python est multi-plateforme (s'il n'utilise pas d'astuces spécifiques à un système d'exploitation), la présence de cette ligne reste toutefois utile. De plus elle permet de voir quelle version de Python est utilisée pour la syntaxe du fichier.

### Encodage du fichier

Avec Python 2 il faut indiquer l'encodage, comme :
ou
ou tout autre encodage supporté par Python et l'éditeur de texte.
Ces commentaires spéciaux indiquent à Python que vous utiliserez dans votre script :
* Soit le jeu de caractères accentués correspondant aux principales langues de l'Europe occidentale (Français, Italien, Portugais, etc.), codé sur un seul octet suivant la norme ISO-8859 ;
* Soit le système de codage mondial sur deux octets appelé Unicode (dont la variante Utf-8 ne code que les caractères « spéciaux » sur deux octets, les caractères du jeu ASCII standard restant codés sur un seul octet). Ce dernier système commence à se répandre de plus en plus, car il présente l'avantage de permettre la coexistence de caractères de toutes origines dans le même document (caractères grecs, arabes, cyrilliques, japonais, etc.). C'est ce mode qu'il faut privilégier pour plus de compatibilité.
Python peut utiliser les deux encodages de caractères, mais vous devez lui signaler lequel vous utilisez.
Si votre éditeur de texte enregistre les fichiers en UTF-8, placez le second des pseudo-commentaires indiqués ci-dessus au début de chacun de vos scripts. Mac OS X et Linux utilisent ce codage.
Si votre système d'exploitation fonctionne suivant la norme ancienne (ISO-8859), vous devrez utiliser plutôt le premier pseudo-commentaire.
Si vous n'en indiquez aucun, vous recevrez de temps à autre des messages d'avertissement de la part de l'interpréteur, et vous éprouverez peut-être même quelques difficultés à éditer correctement vos scripts dans l'environnement IDLE (en particulier sous Windows).
Sous Python 3 ces problèmes d'encodage n’apparaissent pas car celui-ci utilise par défaut l'Unicode.

## Références

* ↑ http://scintilla.sourceforge.net/SciTETranslation.html
* ↑ https://eclipse.org/cdt/
* ↑ (anglais) http://pydev.org/