Utiliser la fenêtre interactive PythonWork with the Python Interactive window

Visual Studio intègre une fenêtre REPL (read-evaluate-print loop) interactive pour chacun de vos environnements Python, ce qui permet d’améliorer le REPL obtenu avec python.exe sur la ligne de commande.Visual Studio provides an interactive read-evaluate-print loop (REPL) window for each of your Python environments, which improves upon the REPL you get with python.exe on the command line. La fenêtre Interactive (ouverte avec les commandes de menu Affichage > Autres fenêtres > <environnement> Interactif) vous permet d’entrer du code Python arbitraire et de voir immédiatement les résultats.The Interactive window (opened with the View > Other Windows > <environment> Interactive menu commands) lets you enter arbitrary Python code and see immediate results. Ce mode de codage vous aide à étudier et à tester des API et des bibliothèques, mais aussi à développer de manière interactive du code opérationnel à inclure dans vos projets.This way of coding helps you learn and experiment with APIs and libraries, and to interactively develop working code to include in your projects.

Fenêtre interactive Python

Visual Studio propose plusieurs modes REPL Python au choix :Visual Studio has a number of Python REPL modes to choose from:

REPLREPL DescriptionDescription ModificationEditing DébogageDebugging ImagesImages
StandardStandard REPL par défaut, communique directement avec PythonDefault REPL, talks to Python directly Modification standard (multiligne, etc.).Standard editing (multiline, etc.). Oui, via $attachYes, via $attach NonNo
DébogageDebug REPL par défaut, communique avec le processus Python déboguéDefault REPL, talks to debugged Python process Modification standardStandard editing Débogage uniquementOnly debugging NonNo
IPythonIPython REPL qui communique avec le serveur principal IPythonREPL talks to IPython backend Commandes IPython, avantages de PylabIPython commands, Pylab conveniences NonNo Oui, inline dans REPLYes, inline in REPL
IPython sans PylabIPython w/o Pylab REPL qui communique avec le serveur principal IPythonREPL talks to IPython backend IPython standardStandard IPython NonNo Oui, fenêtre distincteYes, separate window

Cet article décrit les modes REPL Standard et Débogage.This article describes the Standard and Debug REPL modes. Pour plus d’informations sur les modes IPython, consultez Utiliser IPython REPL.For details on IPython modes, see Use the IPython REPL.

Pour obtenir une procédure pas à pas détaillée avec des exemples, notamment les interactions avec l’éditeur Ctrl+Entrée, consultez Tutoriel - Étape 3 : Utiliser la fenêtre REPL interactive.For a detailed walkthrough with examples, including the interactions with the editor such as Ctrl+Enter, see Tutorial Step 3: Use the Interactive REPL window.

Icône représentant une caméra pour les vidéosmovie camera icon for video Regarder une vidéo (Microsoft Virtual Academy) sur la fenêtre Interactive (2 min 22 s).Watch a video (Microsoft Virtual Academy) on the Interactive window (2m 22s).

Ouvrir une fenêtre interactiveOpen an Interactive window

Il existe plusieurs manières d’ouvrir la fenêtre Interactive pour un environnement.There are several ways to open the Interactive window for an environment.

En premier lieu, passez à la fenêtre Environnements Python (Affichage > Autres fenêtres > Environnements Python ou Ctrl+K > Ctrl+`), puis sélectionnez la commande ou le bouton Ouvrir une fenêtre interactive pour l’environnement choisi.First, switch to the Python Environments window (View > Other Windows > Python Environments or Ctrl+K > Ctrl+`) and select the Open Interactive Window command or button for a chosen environment.

Lien vers la fenêtre interactive dans la fenêtre des environnements Python

En deuxième lieu, quasiment au bas du menu Affichage > Autres fenêtres, vous trouverez une commande Fenêtre interactive Python pour votre environnement par défaut, ainsi qu’une commande pour passer à la fenêtre Environnements :Second, near the bottom of the View > Other Windows menu, there's a Python Interactive Window command for your default environment, as well as a command to switch to the Environments window:

Éléments de menu de la fenêtre interactive dans View > Other Windows (Affichage > Autres fenêtres)

En troisième lieu, ouvrez une fenêtre Interactive sur le fichier de démarrage de votre projet, ou pour un fichier autonome, en sélectionnant la commande de menu Déboguer > Exécuter <Projet | Fichier> en mode interactif Python (Maj+Alt+F5) :Third, you can open an Interactive window on the startup file in your project, or for a stand-alone file, by selecting the Debug > Execute <Project | File> in Python Interactive menu command (Shift+Alt+F5):

Exécution du projet dans le menu Python Interactive

Enfin, sélectionnez le code dans le fichier, et utilisez la commande Envoyer vers Interactive décrite ci-dessous.Finally, you can select code in file and use the Send to Interactive command described below.

Options de la fenêtre interactiveInteractive window options

Vous pouvez contrôler différents aspects de la fenêtre Interactive via Outils > Options > Python Tools > Fenêtres interactives (consultez Options) :You can control various aspects of the Interactive window through Tools > Options > Python Tools > Interactive Windows (see Options):

Options de la fenêtre interactive Python

Utiliser la fenêtre interactiveUse the Interactive window

Une fois que la fenêtre Interactive est ouverte, vous pouvez commencer à entrer du code ligne par ligne, à l’invite >>>.Once the Interactive window is open, you can start entering code line-by-line at the >>> prompt. La fenêtre Interactive exécute chaque ligne que vous entrez, ce qui inclut l’importation de modules, la définition de variables, etc. :The Interactive window executes each line as you enter it, which includes importing modules, defining variables, and so on:

Fenêtre interactive Python

L’exception se produit quand des lignes de code supplémentaires sont nécessaires pour élaborer une instruction complète, par exemple quand une instruction for se termine par un signe deux-points, comme illustré ci-dessus.The exception is when additional lines of code are needed to make a complete statement, such as when a for statement ends in a colon as shown above. Dans ce cas, l’invite de ligne devient ... pour vous indiquer que vous devez entrer des lignes supplémentaires pour le bloc, comme illustré sur la quatrième et la cinquième ligne de la capture ci-dessus.In these cases, the line prompt changes to ... indicating that you need to enter additional lines for the block, as shown on the fourth and fifth lines in the graphic above. Quand vous appuyez sur Entrée sur une ligne vide, la fenêtre Interactive ferme le bloc et l’exécute dans l’interpréteur.When you press Enter on a blank line, the Interactive window closes the block and runs it in the interpreter.

Tip

La fenêtre Interactive améliore l’expérience utilisateur classique de l’environnement en ligne de commande REPL de Python en mettant automatiquement en retrait les instructions qui font partie d’une étendue environnante.The Interactive window improves upon the usual Python command-line REPL experience by automatically indenting statements that belong to a surrounding scope. Son historique (rappelé avec la flèche vers le haut) fournit également des éléments multilignes, tandis que la fonctionnalité REPL de la ligne de commande fournit uniquement des lignes uniques.Its history (recalled with the up arrow) also provides multiline items, whereas the command-line REPL provides only single lines.

La fenêtre Interactive prend également en charge plusieurs métacommandes.The Interactive window also supports several meta-commands. Toutes les métacommandes commencent par $ ; vous pouvez taper $help pour obtenir la liste des métacommandes et $help <command> pour obtenir des détails relatifs à l’utilisation d’une commande spécifique.All meta-commands start with $, and you can type $help to get a list of the meta-commands and $help <command> to get usage details for a specific command.

MétacommandeMeta-command DescriptionDescription
$$ Insère un commentaire, utile pour commenter le code dans votre session.Inserts a comment, which is helpful to comment code throughout your session.
$attach Attache le débogueur Visual Studio au processus de fenêtre REPL pour activer le débogage.Attaches the Visual Studio debugger to the REPL window process to enable debugging.
$cls, $clear$cls, $clear Efface le contenu de la fenêtre de l’éditeur, en laissant intacts l’historique et le contexte d’exécution.Clears the contents of the editor window, leaving history and execution context intact.
$help Affiche une liste de commandes ou une aide sur une commande spécifique.Display a list of commands, or help on a specific command.
$load Charge les commandes d’un fichier et s’exécute jusqu’à la fin.Loads commands from file and executes until complete.
$mod Remplace la portée actuelle par le nom de module spécifié.Switches the current scope to the specified module name.
$reset Réinitialise l’environnement d’exécution à l’état initial, tout en conservant l’historique.Resets the execution environment to the initial state, but keeps history.
$wait Respecte un temps d’attente correspondant au minimum au nombre de millisecondes spécifié.Waits for at least the specified number of milliseconds.

Les commandes peuvent également être étendues par les extensions Visual Studio en implémentant et en exportant IInteractiveWindowCommand (exemple).Commands are also extensible by Visual Studio extensions by implementing and exporting IInteractiveWindowCommand (example).

Changer d’étendueSwitch scopes

Par défaut, la fenêtre Interactive d’un projet se limite au fichier de démarrage du projet, comme si vous l’aviez exécutée à partir de l’invite de commandes.By default, the Interactive window for a project is scoped to the project's startup file as if you ran it from the command prompt. Pour un fichier autonome, elle se limite à ce fichier.For a stand-alone file, it scopes to that file. Toutefois, vous pouvez changer l’étendue à tout moment pendant votre session REPL à l’aide du menu déroulant situé en haut de la fenêtre Interactive :At any time during your REPL session, however, the drop-down menu along the top of the Interactive window lets you change scope:

Portées de la fenêtre interactive

Une fois que vous importez un module, par exemple en tapant import importlib, des options s’affichent dans la liste déroulante et vous permettent de basculer vers n’importe quelle portée de ce module.Once you import a module, such as typing import importlib, options appear in the drop-down to switch into any scope in that module. Un message dans la fenêtre Interactive indique également la nouvelle étendue, ce qui vous permet de suivre votre progression vers un état spécifique dans une session.A message in the Interactive window also indicates the new scope, so you can track how you got to a certain state during your session.

Si vous entrez dir() dans une portée, vous obtenez les identificateurs valides dans cette portée, notamment les noms des fonctions, les classes et les variables.Entering dir() in a scope displays valid identifiers in that scope, including function names, classes, and variables. Par exemple, si vous utilisez import importlib suivi de dir(), vous obtenez les informations suivantes :For example, using import importlib followed by dir() shows the following:

Fenêtre interactive dans la portée importlib

Commande Envoyer vers InteractiveSend to Interactive command

En plus de pouvoir travailler directement dans la fenêtre Interactive, vous pouvez sélectionner du code dans l’éditeur, cliquer avec le bouton droit, puis choisir Envoyer vers Interactive, ou appuyer sur Ctrl+Entrée.In addition to working within the Interactive window directly, you can select code in the editor, right-click, and choose Send to Interactive or press Ctrl+Enter.

Commande de menu Envoyer vers Interactive

Cette commande est utile dans le cadre du développement de code itératif ou évolutionnaire, car elle permet notamment de tester votre code à mesure que vous le développez.This command is useful for iterative or evolutionary code development, including testing your code as you develop it. Par exemple, une fois que vous avez envoyé du code dans la fenêtre Interactive et que vous avez vu sa sortie, vous pouvez appuyer sur la touche Haut pour afficher de nouveau le code, le modifier et le tester rapidement à l’aide des touches Ctrl+Entrée.For example, once you've sent a piece of code to the Interactive window and seen its output, you can press the up arrow to show the code again, modify it, and test it quickly by pressing Ctrl+Enter. (Appuyez sur Entrée à la fin d’une entrée pour l’exécuter, ou appuyez sur Entrée au milieu d’une entrée pour insérer une nouvelle ligne.) Une fois que vous obtenez le code que vous souhaitez, vous pouvez facilement le copier dans votre fichier projet.(Pressing Enter at the end of input executes it, but pressing Enter in the middle of input inserts a newline.) Once you have the code you want, you can easily copy it back into your project file.

Tip

Par défaut, Visual Studio supprime >>> et ... REPL affiche une invite quand vous collez du code de la fenêtre Interactive dans l’éditeur.By default, Visual Studio removes >>> and ... REPL prompts when pasting code from the Interactive window into the editor. Vous pouvez changer ce comportement sous l’onglet Outils > Options > Éditeur de texte > Python > Avancé à l’aide de l’option Le collage supprime les invites REPL.You can change this behavior on the Tools > Options > Text Editor > Python > Advanced tab using the Paste removes REPL prompts option. Consultez Options - Options diverses.See Options - Miscellaneous options.

Quand vous utilisez un fichier de code comme bloc-notes, vous avez souvent un petit bloc de code que vous souhaitez envoyer en une seule fois.When using a code file as a scratchpad, you often have a small block of code you want to send all at once. Pour regrouper le code, marquez-le comme cellule de code en ajoutant un commentaire commençant par #%% au début de la cellule, ce qui met fin à la précédente.To group code together, mark the code as a code cell by adding a comment starting with #%% to the beginning of the cell, which ends the previous one. Les cellules de code peuvent être développées et réduites. L’utilisation de Ctrl+Entrée à l’intérieur d’une cellule de code permet d’envoyer l’intégralité de la cellule dans la fenêtre Interactive et de passer à la suivante.Code cells can be collapsed and expanded, and using Ctrl+Enter inside a code cell sends the entire cell to the Interactive window and moves to the next one.

Visual Studio détecte également les cellules de code commençant par des commentaires du type # In[1]:, qui est le format que vous obtenez lors de l’exportation d’un bloc-notes Jupyter sous forme de fichier Python.Visual Studio also detects code cells starting with comments like # In[1]:, which is the format you get when exporting a Jupyter notebook as a Python file. Cette détection facilite l’exécution d’un bloc-notes à partir d’Azure Notebooks en le téléchargeant sous la forme d’un fichier Python, en l’ouvrant dans Visual Studio et en utilisant Ctrl+Entrée pour exécuter chaque cellule.This detection makes it easy to run a notebook from Azure Notebooks by downloading as a Python file, opening in Visual Studio, and using Ctrl+Enter to run each cell.

Cellules de code interactif

Comportement IntelliSenseIntelliSense behavior

La fenêtre Interactive inclut la fonctionnalité IntelliSense basée sur les objets dynamiques, contrairement à l’éditeur de code dans lequel la fonctionnalité IntelliSense repose uniquement sur l’analyse du code source.The Interactive window includes IntelliSense based on the live objects, unlike the code editor in which IntelliSense is based on source code analysis only. Ces suggestions sont plus appropriées dans la fenêtre Interactive, en particulier avec du code généré dynamiquement.These suggestions are more correct in the Interactive window, especially with dynamically generated code. L’inconvénient est que les fonctions qui comportent des effets secondaires (par exemple, la journalisation des messages) peuvent affecter votre expérience de développement.The drawback is that functions with side-effects (such as logging messages) may impact your development experience.

Si ce comportement pose problème, changez les paramètres sous Outils > Options > Python Tools > Fenêtres interactives dans le groupe Mode de saisie semi-automatique, comme indiqué dans Options - Options des fenêtres interactives.If this behavior is a problem, change the settings under Tools > Options > Python Tools > Interactive Windows in the Completion Mode group, as described on Options - Interactive windows options.