Modifier le code Python et utiliser IntelliSense

Comme vous passez beaucoup de votre temps de développement dans l’éditeur de code, la prise en charge de Python dans Visual Studio fournit plusieurs fonctionnalités pour améliorer la productivité. Ces fonctionnalités comprennent la mise en évidence de la syntaxe IntelliSense, l’autocomplétion, l’aide de signature, les substitutions de méthode, la recherche et la navigation.

L’éditeur de code est intégré à la fenêtre Interactive dans Visual Studio. En travaillant, il est facile d’échanger du code entre les deux fenêtres. Pour plus d’informations, consultez Tutoriel Étape 3 : Utiliser la fenêtre REPL Interactive et Utiliser la fenêtre Interactive - Envoyer à la commande Interactive.

Le masquage vous aide à rester concentré sur des sections particulières de votre code. Pour vous documenter sur la modification de code dans Visual Studio, consultez Fonctionnalités de l’éditeur de code.

Le Navigateur d’objets de Visual Studio vous permet d’inspecter les classes Python définies dans chaque module et les fonctions définies dans ces classes. Vous pouvez accéder à cette fonctionnalité depuis le menu Affichage ou en utilisant le raccourci clavier Ctrl+Alt+J.

Utilisez les fonctionnalités d’IntelliSense

IntelliSense fournit les saisies semi-automatiques, l’assistance pour la signature, Info express et la coloration du code. Visual Studio 2017 version 15.7 et les versions ultérieures prennent également en charge les affinages de type.

Pour de meilleures performances, IntelliSense dans Visual Studio 2017 version 15.5 et antérieures dépend d’une base de données de complétion générée pour chaque environnement Python de votre projet. Vous pourriez avoir besoin de rafraîchir votre base de données si vous ajoutez, supprimez ou mettez à jour des packages. Le statut de la base de données est affiché dans la fenêtre Environnements Python (un compagnon de Explorateur de solutions) sur l’onglet IntelliSense. Pour plus d’informations, consultez Référence de la fenêtre Environnements.

Visual Studio 2017 version 15.6 et ultérieures utilisent un autre moyen pour fournir des complétions IntelliSense qui ne dépendent pas de la base de données.

Saisies semi-automatiques

Les complétions apparaissent comme des déclarations, identifiants et autres mots qui peuvent être correctement entrés à l’emplacement actuel dans l’éditeur. Intellisense peuple la liste des options basée sur le contexte et filtre les éléments incorrects ou distrayants. Les complétions sont souvent déclenchées en entrant différentes déclarations (comme import) et opérateurs (comme un point), mais elles peuvent apparaître à tout moment grâce au raccourci clavier Ctrl+J +Espace.

Capture d’écran montrant la saisie semi-automatique des membres via Intellisense dans l’éditeur Visual Studio.

Lorsqu’une liste d’auto-complétion est ouverte, vous pouvez rechercher la complétion souhaitée en utilisant les touches fléchées, la souris, ou en continuant à taper. À mesure que vous tapez, la liste est filtrée pour afficher les propositions les plus probables. Vous pouvez également utiliser des raccourcis tels que :

  • Tapez des lettres qui ne sont pas au début du nom, comme « parse » pour trouver « argparse »
  • Saisissez uniquement des lettres qui sont au début des mots, comme « abc » pour trouver « AbstractBaseClass » ou « air » pour trouver « as_integer_ratio »
  • Sautez des lettres, comme « b64 » pour trouver « base64 »

Voici quelques exemples :

Capture d’écran montrant la saisie semi-automatique des membres avec filtrage dans l’éditeur Visual Studio.

Les saisies semi-automatiques de membres apparaissent automatiquement quand vous tapez un point après une variable ou une valeur, ainsi que les méthodes et attributs des types potentiels. Si une variable peut être de plus d’un type, la liste inclut toutes les possibilités de tous les types. Des informations supplémentaires sont affichées pour indiquer quels types supportent chaque complétion. Lorsque tous les types possibles supportent une complétion, aucune annotation n’est affichée.

Capture d’écran montrant la saisie semi-automatique des membres sur plusieurs types dans l’éditeur de Visual Studio.

Par défaut, les membres « dunder » (membres commençant et se terminant par un double underscore) ne sont pas affichés. En général, ces membres ne devraient pas être accédés directement. Si vous avez besoin d’utiliser un dunder, tapez le double underscore en tête pour ajouter ces complétions à la liste :

Capture d’écran montrant private sous les types de complétion des membres dans l’éditeur de Visual Studio.

Les instructions import et from ... import affichent une liste des modules qui peuvent être importés. La déclaration from ... import produit une liste qui inclut les membres qui peuvent être importés du module spécifié.

Capture d’écran montrant la saisie semi-automatique de l’importation et de la réception de l’importation dans l’éditeur Visual Studio.

Les instructions raise et except affichent les listes des classes susceptibles d’être des types d’erreurs. La liste peut ne pas inclure toutes les exceptions définies par l’utilisateur, mais elle vous aide à trouver rapidement des exceptions intégrées appropriées :

Capture d’écran montrant la saisie semi-automatique des exceptions dans l’éditeur de Visual Studio.

Sélectionner le symbole @ (at) commence un décorateur et montre les décorateurs potentiels. Beaucoup de ces éléments ne sont pas utilisables comme décorateurs. Consultez la documentation de la bibliothèque pour déterminer le décorateur à utiliser.

Capture d’écran montrant la saisie semi-automatique de l’élément décoratif dans l’éditeur de Visual Studio.

Pour plus d’informations, consultez Options - résultats de complétion.

Affinages de type

Les indications de type sont disponibles dans Visual Studio 2017 version 15.7 et ultérieures.

Les « affinages de type » dans Python 3.5+ (PEP 484, python.org) font référence à une syntaxe d’annotation pour les fonctions et classes qui indiquent les types des arguments, des valeurs de retour et des attributs de classe. IntelliSense affiche des affinages de type quand vous pointez sur des appels de fonctions, des arguments et des variables dotés de ces annotations.

Dans l’exemple suivant, la classe Vector est déclarée comme le type List[float], et la fonction scale contient des indications de type pour ses arguments et sa valeur de retour. Quand vous pointez sur un appel à cette fonction, les affinages de type apparaissent :

Capture d’écran montrant comment le survol d’un appel de fonction permet d’obtenir des indications sur le type de fonction.

Dans l’exemple suivant, vous pouvez voir comment les attributs annotés de la classe Employee apparaissent dans la popup de complétion IntelliSense pour un attribut :

Capture d’écran montrant la saisie semi-automatique IntelliSense pour une classe avec des indicateurs de type.

Il est également utile de valider les indications de type dans tout votre projet car les erreurs n’apparaissent normalement pas avant l’exécution. À cette fin, Visual Studio intègre l’outil standard de l’industrie Mypy via la commande du menu contextuel Python>Exécuter Mypy dans Explorateur de solutions :

Capture d’écran montrant les commandes de linting disponibles pour les projets Python dans Explorateur de solutions.

L’exécution de la commande vous invite à installer le package Mypy, si nécessaire. Visual Studio exécute ensuite Mypy pour valider les indications de type dans chaque fichier Python du projet. Les erreurs apparaissent dans la fenêtre Visual Studio Liste d’erreurs. Quand vous sélectionnez un élément dans la fenêtre, vous accédez à la ligne appropriée dans votre code.

À titre de simple exemple, la définition de fonction suivante contient un affinage de type pour signaler que l’argument input est de type str, alors que l’appel à cette fonction tente de passer un entier :

def commas_to_colons(input: str):
    items = input.split(',')
    items = [x.strip() for x in items]
    return ':'.join(items)

commas_to_colons(1)

L’utilisation de la commande Exécuter Mypy sur ce code génère l’erreur suivante :

Capture d’écran montrant l’exemple de résultat des indicateurs de type de validation Mypy.

Remarque

Pour les versions de Python antérieures à la version 3.5, Visual Studio affiche également les affinages de type que vous fournissez par le biais de fichiers stub Typeshed (.pyi). Vous pouvez utiliser des fichiers de stub lorsque vous ne souhaitez pas inclure directement des indications de type dans votre code ou pour créer des indications de type pour une bibliothèque qui ne les utilise pas directement. Pour plus d’informations, consultez Créer des stubs pour les modules Python dans le wiki du projet Mypy.

Visual Studio ne prend actuellement pas en charge les indications de type dans les commentaires.

Assistance pour la signature

Lors de la rédaction de code qui appelle une fonction, l’aide à la signature apparaît lorsque vous tapez la parenthèse ouvrante (. Elle affiche la documentation disponible et les informations sur les paramètres. Vous pouvez accéder à l’aide à la signature avec le raccourci clavier Ctrl+Maj+Espace à l’intérieur d’un appel de fonction. Les informations affichées dépendent des chaînes de documentation du code source de la fonction, mais elles incluent toutes les valeurs par défaut.

Capture d’écran montrant l’aide à la signature dans l’éditeur Visual Studio.

Conseil

Pour désactiver l’aide à la signature, allez dans Outils>Options>Éditeur de texte>Python>Général. Décochez la case Complétion de déclaration>Informations sur les paramètres.

Info express

Placer le pointeur de la souris sur un identificateur permet d’afficher une info-bulle Info express. Selon l’identifiant, Quick Info peut afficher les valeurs ou types potentiels, les paramètres pour les fonctions et méthodes, ou une description de l’élément.

Capture d’écran montrant les informations d’affichage d’informations rapides dans l’éditeur Visual Studio.

Coloration du code

La coloration du code utilise les informations issues de l’analyse du code pour les variables de couleurs, les instructions et d’autres parties de votre code. Les variables qui font référence à des modules ou des classes peuvent être affichées dans une couleur différente des fonctions ou d’autres valeurs. Les noms de paramètres peuvent apparaître dans une couleur différente de celle des variables locales ou globales. Par défaut, les fonctions ne sont pas affichées en gras.

Capture d’écran montrant la coloration du code et de la syntaxe dans l’éditeur Visual Studio.

Pour personnaliser les couleurs, rendez-vous dans Outils>Options>Environnement>Polices et couleurs. Dans la liste des éléments d’affichage, modifiez les entrées Python souhaitées :

Capture d’écran montrant les options Polices et Couleurs dans Visual Studio.

Insérer des extraits de code

Les extraits de code sont des fragments de code qui peuvent être insérés dans vos fichiers en tapant un raccourci et en sélectionnant Tab ou à l’aide des commandes Modifier>IntelliSense>Insérer un extrait de code et Entourer avec, en sélectionnant Python, puis l’extrait de code requis.

Par exemple, class est un raccourci pour un extrait de code qui insère une définition de classe. L’extrait de code s’affiche dans la liste d’autocomplétion lorsque vous tapez class :

Capture d’écran montrant un extrait de code pour le raccourci de classe.

Sélectionnez Tab pour générer le reste de la classe. Vous pouvez ensuite saisir le nom et la liste des bases, passer d’un champ en surbrillance à l’autre avec la touche Tab, puis appuyer sur Entrée pour commencer à saisir le corps du texte.

Capture d’écran qui met en évidence les zones d’un extrait de code à compléter.

Lorsque vous utilisez la commande de menu Modifier>IntelliSense>Insérer un extrait de code, sélectionnez d’abord Python, puis sélectionnez un extrait de code :

Capture d’écran montrant comment sélectionner un extrait de code à l’aide de la commande « Insérer un extrait de code ».

La commande Modifier>IntelliSense>Entourer avec place la sélection actuelle dans l’éditeur de texte à l’intérieur d’un élément structurel choisi. Supposons que vous aviez un morceau de code comme l’exemple suivant :

sum = 0
for x in range(1, 100):
    sum = sum + x

Le fait de sélectionner ce code et de choisir la commande Entourer de affiche la liste des extraits de code disponibles. Choisir def dans la liste des extraits place le code sélectionné à l’intérieur d’une définition de fonction. Vous pouvez utiliser la touche Tab pour naviguer entre le nom de fonction et les arguments mis en évidence :

Capture d’écran montrant comment utiliser la commande « Entourer avec » pour les extraits de code.

Examiner les extraits de code disponibles

Vous pouvez voir les extraits de code disponibles dans le Gestionnaire d’extraits de code. Accédez à cette fonctionnalité depuis Outils>Gestionnaire d’extraits de code et sélectionnez Python comme langue :

Capture d’écran montrant le Gestionnaire d’extraits de code dans Visual Studio.

Pour créer vos propres extraits de code, consultez Procédure pas à pas : créer un extrait de code.

Si vous écrivez un extrait de code de qualité et que vous souhaitez le partager, n’hésitez pas à le publier dans un contenu Gist et informez-nous. Nous pourrions être en mesure de l’inclure dans une future version de Visual Studio.

Le support de Python dans Visual Studio offre plusieurs façons de naviguer rapidement dans votre code, comme des bibliothèques dont le code source est disponible. Vous pouvez trouver des bibliothèques avec code source pour la barre de navigation, Aller à la définition, Aller à et Trouver toutes les références. Vous pouvez également utiliser l’Explorateur d’objets de Visual Studio.

La barre de navigation s’affiche en haut de chaque fenêtre de l’éditeur et inclut une liste de définitions à deux niveaux. La liste déroulante de gauche contient les définitions des classes et fonctions de niveau supérieur dans le fichier actuel. La liste déroulante de droite affiche une liste de définitions dans le champ d’application indiqué à gauche. À mesure de vos déplacements dans l’éditeur, les listes sont mises à jour pour afficher votre contexte actuel. En outre, vous pouvez sélectionner une entrée à partir de ces listes pour y accéder directement.

Capture d’écran montrant la barre de navigation dans l’éditeur Visual Studio.

Conseil

Pour masquer la barre de navigation, accédez à Outils>Options>Éditeur de texte>Python>Général et désactivez Paramètres>Barre de navigation.

Atteindre la définition

La commande Aller à la définition saute rapidement de l’utilisation d’un identifiant (comme un nom de fonction, classe ou variable), à l’emplacement de la définition du code source. Pour invoquer la commande, cliquez droit sur un identifiant et sélectionnez Aller à la définition ou placez le curseur sur l’identifiant et sélectionnez F12. La commande fonctionne à travers votre code et des bibliothèques externes où le code source est disponible. Si le code source de la bibliothèque n’est pas disponible, Aller à la définition saute à l’instruction import pertinente pour une référence de module ou affiche une erreur.

Capture d’écran montrant la commande « Aller à la définition » dans Visual Studio.

Atteindre

La commande Modifier>Aller à (Ctrl+,) affiche une boîte de recherche dans l’éditeur où vous pouvez taper n’importe quelle chaîne et voir les correspondances possibles dans votre code qui définit une fonction, classe ou variable contenant cette chaîne. Cette fonctionnalité permet de bénéficier d’une fonction similaire à Atteindre la définition, mais sans avoir à localiser une utilisation d’un identificateur.

Pour naviguer vers la définition de cet identifiant, double-cliquez sur n’importe quel nom ou sélectionnez le nom avec les touches fléchées suivi de Entrée.

Capture d’écran montrant la commande « Aller à » dans Visual Studio.

Rechercher toutes les références

La fonctionnalité Trouver toutes les références est un moyen utile de découvrir où un identifiant donné est à la fois défini et utilisé, comme les importations et les affectations. Pour invoquer la commande, cliquez droit sur un identifiant et sélectionnez Trouver toutes les références, ou placez le curseur sur l’identifiant et sélectionnez Shift+F12. Double-cliquer sur un élément de la liste permet d’accéder à son emplacement.

Capture d’écran montrant les résultats de la recherche de toutes les références dans Visual Studio.