Modificare il codice Python e usare IntelliSense

Poiché si passa molto tempo nell'editor di codice, il supporto per Python in Visual Studio offre funzionalità che consentono di migliorare la produttività. Le funzionalità includono l'evidenziazione della sintassi IntelliSense, il completamento automatico, la Guida alla firma, le sostituzioni dei metodi, la ricerca e la navigazione.

L'editor di codice è integrato con la finestra interattiva in Visual Studio. Mentre si lavora, è facile scambiare codice tra le due finestre. Per altre informazioni, vedere Passaggio 3 dell'esercitazione: Usare la finestra Interattiva REPL e Usare il comando Interattivo - Invia a Interattivo.

La struttura consente di concentrarsi su sezioni specifiche del codice. Per informazioni generali sulla modifica del codice in Visual Studio, vedere Funzionalità dell'editor del codice.

Il Visualizzatore oggetti di Visual Studio consente di esaminare le classi Python definite in ogni modulo e le funzioni definite in tali classi. È possibile accedere a questa funzionalità nel menu Visualizza o usando i tasti di scelta rapida CTRL+ALT+J.

Usare le funzionalità di IntelliSense

IntelliSense offre completamenti, informazioni della Guida per le firme, informazioni rapide e colorazione del codice. Visual Studio 2017 versione 15.7 e versioni successive supporta anche i suggerimenti relativi al tipo.

Per migliorare le prestazioni, IntelliSense in Visual Studio 2017 versione 15.5 e precedenti dipende da un database di completamento generato per ogni ambiente Python nel progetto. Potrebbe essere necessario aggiornare il database se si aggiungono, rimuovono o aggiornano pacchetti. Lo stato del database viene visualizzato nella finestra Ambienti Python (complementare di Esplora soluzioni) nella scheda IntelliSense. Per altre informazioni, vedere Informazioni di riferimento sulla finestra Ambienti.

Visual Studio 2017 versione 15.6 e successive usa un mezzo diverso per fornire completamenti IntelliSense che non dipendono dal database.

Completamenti

I completamenti vengono visualizzati come istruzioni, identificatori e altre parole che possono essere immesse in modo appropriato nel percorso corrente nell'editor. IntelliSense popola l'elenco di opzioni in base al contesto e filtra elementi non corretti o distratti. I completamenti vengono spesso attivati immettendo istruzioni diverse (ad esempio import) e operatori (incluso un punto), ma possono essere visualizzati in qualsiasi momento selezionando la scelta rapida da tastiera CTRL+J +Space.

Screenshot che mostra il completamento dei membri tramite IntelliSense nell'editor di Visual Studio.

Quando un elenco di completamento è aperto, è possibile cercare il completamento desiderato usando i tasti di direzione, il mouse o continuando a digitare. Digitando altre lettere l'elenco viene ulteriormente filtrato per mostrare i completamenti probabili. È anche possibile usare i tasti di scelta rapida, ad esempio:

  • Digitare lettere che non sono all'inizio del nome, ad esempio 'parse' per trovare 'argparse'
  • Digitare solo lettere che si trovano all'inizio delle parole, ad esempio 'abc' per trovare 'AbstractBaseClass' o 'air' per trovare 'as_integer_ratio'
  • Ignorare le lettere, ad esempio 'b64' per trovare 'base64'

Di seguito sono riportati alcuni esempi.

Screenshot che mostra il completamento dei membri con il filtro nell'editor di Visual Studio.

I completamenti dei membri appaiono automaticamente quando si digita un punto dopo una variabile o un valore, insieme ai metodi e agli attributi dei tipi potenziali. Se una variabile può essere più di un tipo, l'elenco include tutte le possibilità di tutti i tipi. Vengono visualizzate informazioni aggiuntive per indicare quali tipi supportano ogni completamento. Quando tutti i tipi possibili supportano un completamento, non viene visualizzata alcuna annotazione.

Screenshot che mostra il completamento dei membri in più tipi nell'editor di Visual Studio.

Per impostazione predefinita, i membri "dunder" (membri che iniziano e terminano con un doppio carattere di sottolineatura) non vengono visualizzati. In generale, tali membri non devono essere accessibili direttamente. Se è necessario usare una dunder, digitare il doppio carattere di sottolineatura iniziale per aggiungere questi completamenti all'elenco:

Screenshot che mostra i tipi di completamento dei membri privati nell'editor di Visual Studio.

Le istruzioni import e from ... import visualizzano un elenco dei moduli che possono essere importati. L'istruzione from ... import produce un elenco che include membri che possono essere importati dal modulo specificato.

Screenshot che mostra l'importazione e il completamento dell'importazione nell'editor di Visual Studio.

Per le istruzioni raise e except vengono visualizzati gli elenchi di classi che probabilmente sono tipi di errore. L'elenco potrebbe non includere tutte le eccezioni definite dall'utente, ma consente di trovare rapidamente le eccezioni predefinite appropriate:

Screenshot che mostra il completamento delle eccezioni nell'editor di Visual Studio.

La selezione del @ simbolo (in corrispondenza) avvia un elemento Decorator e mostra i potenziali elementi Decorator. Molti di questi elementi non sono utilizzabili come decorator. Controllare la documentazione della libreria per determinare quale elemento decorator usare.

Screenshot che mostra il completamento dell'elemento Decorator nell'editor di Visual Studio.

Per altre informazioni, vedere Opzioni - risultati di completamento.

Suggerimenti relativi al tipo

Gli hint di tipo sono disponibili in Visual Studio 2017 versione 15.7 e successive.

I "suggerimenti relativi al tipo" in Python 3.5+ (PEP 484 (python.org) rappresentano una sintassi di annotazione per le funzioni e le classi che indicano i tipi di argomenti, valori restituiti e attributi di classi. IntelliSense visualizza i suggerimenti relativi al tipo quando si passa il mouse su chiamate di funzioni, argomenti e variabili che presentano tali annotazioni.

Nell'esempio seguente la Vector classe viene dichiarata come tipo List[float]e la scale funzione contiene hint di tipo sia per gli argomenti che per il valore restituito. Con il passaggio del mouse su una chiamata a tale funzione vengono visualizzati i suggerimenti relativi al tipo:

Screenshot che mostra come passare il puntatore del mouse su una chiamata di funzione per visualizzare gli hint di tipo.

Nell'esempio seguente è possibile vedere come vengono visualizzati gli attributi annotati della Employee classe nel popup di completamento di IntelliSense per un attributo:

Screenshot che mostra il completamento di IntelliSense per una classe con hint di tipo.

È anche utile convalidare gli hint di tipo in tutto il progetto perché gli errori normalmente non vengono visualizzati fino al runtime. A questo scopo, Visual Studio integra lo strumento Mypy standard del settore tramite il comando di menu di scelta rapida Python>Esegui Mypy in Esplora soluzioni:

Screenshot che mostra i comandi di linting disponibili per i progetti Python in Esplora soluzioni.

Se necessario, eseguire i prompt dei comandi per installare il pacchetto Mypy. Visual Studio esegue quindi Mypy per convalidare gli hint di tipo in ogni file Python nel progetto. Gli errori vengono visualizzati nella finestra Elenco errori di Visual Studio. Se si seleziona un elemento nella finestra, si passa alla riga appropriata nel codice.

Come esempio semplice, la seguente definizione di funzione contiene un suggerimento relativo al tipo per indicare che l'argomento input è di tipo str, mentre la chiamata a tale funzione tenta di passare un numero intero:

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

commas_to_colons(1)

Se si usa il comando Esegui Mypy su questo codice, viene generato l'errore seguente:

Screenshot che mostra il risultato di esempio dei suggerimenti per il tipo di convalida di Mypy.

Nota

Per le versioni di Python precedenti alla 3.5, Visual Studio visualizza anche i suggerimenti relativi al tipo specificati nei file stub (con estensione pyi) di Typeshed. È possibile usare i file stub quando non si vogliono includere hint di tipo direttamente nel codice o per creare hint di tipo per una libreria che non li usa direttamente. Per altre informazioni, vedere Creare stub per i moduli Python nel wiki del progetto Mypy.

Visual Studio attualmente non supporta hint di tipo nei commenti.

Informazioni della Guida per le firme

Quando si scrive codice che chiama una funzione, viene visualizzata la Guida alla firma quando si digita la parentesi (di apertura . Visualizza la documentazione e le informazioni sui parametri disponibili. È possibile accedere alla Guida alla firma con i tasti di scelta rapida CTRL+MAIUSC+SPAZIO all'interno di una chiamata di funzione. Le informazioni visualizzate dipendono dalle stringhe di documentazione nel codice sorgente della funzione, ma includono eventuali valori predefiniti.

Screenshot che mostra la Guida della firma nell'editor di Visual Studio.

Suggerimento

Per disabilitare la Guida alla firma, passare a Strumenti>Opzioni>Editor>di testo Python>Generale. Deselezionare la casella di controllo Informazioni sui parametri di completamento>istruzione.

Informazioni rapide

Al passaggio del mouse su un identificatore viene visualizzata una descrizione comando delle informazioni rapide. A seconda dell'identificatore, le informazioni rapide potrebbero visualizzare i valori o i tipi potenziali, qualsiasi documentazione disponibile, tipi restituiti e percorsi di definizione:

Screenshot che mostra le informazioni di visualizzazione informazioni rapide nell'editor di Visual Studio.

Colorazione del codice

La funzionalità di colorazione del codice usa le informazioni dall'analisi del codice per colorare variabili, istruzioni e altre parti del codice. Le variabili che fanno riferimento a moduli o classi possono essere visualizzate in un colore diverso rispetto alle funzioni o ad altri valori. I nomi dei parametri possono essere visualizzati in un colore diverso rispetto alle variabili locali o globali. Per impostazione predefinita, le funzioni non vengono visualizzate in grassetto.

Screenshot che mostra la colorazione del codice e della sintassi nell'editor di Visual Studio.

Per personalizzare i colori, passare a Strumenti>Opzioni>Ambiente>Tipi di carattere e colori. Nell'elenco Visualizza elementi modificare le voci Python desiderate:

Screenshot che mostra le opzioni Tipi di carattere e colori in Visual Studio.

Inserire frammenti di codice

I frammenti di codice sono frammenti di codice che possono essere inseriti nei file usando una scelta rapida da tastiera e selezionando Tab. È anche possibile usare i comandi Edit IntelliSense Insert Snippet (Modifica>frammento di intelliSense>) e Surround With (Racchiudi tra frammenti), selezionare Python e quindi selezionare il frammento desiderato.

Ad esempio, class è una scelta rapida per un frammento di codice che inserisce una definizione di classe. Il frammento di codice viene visualizzato nell'elenco di completamento automatico quando si digita class:

Screenshot che mostra un frammento di codice per il collegamento alla classe.

La selezione di Tab genera il resto della classe. È quindi possibile digitare sopra il nome e l'elenco delle basi, spostarsi tra i campi evidenziati con Tab e selezionare INVIO per iniziare a digitare il corpo.

Screenshot che mostra le evidenziazioni sulle aree di un frammento di codice da completare.

Quando si usa il comando di menu Modifica>intelliSense>Inserisci frammento di codice, selezionare prima Python e quindi selezionare il frammento di codice desiderato:

Screenshot che mostra come selezionare un frammento di codice tramite il comando Inserisci frammento di codice.

Il comando Edit>IntelliSense>Surround With inserisce la selezione corrente nell'editor di testo all'interno di un elemento strutturale scelto. Si supponga di avere un frammento di codice simile all'esempio seguente:

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

Se si seleziona questo codice e si sceglie il comando Racchiudi tra, viene visualizzato un elenco dei frammenti disponibili. Scegliendo def dall'elenco dei frammenti di codice, il codice selezionato viene inserito all'interno di una definizione di funzione. È possibile usare il tasto TAB per spostarsi tra il nome della funzione evidenziato e gli argomenti:

Screenshot che mostra come usare il comando Racchiudi con per i frammenti di codice.

Esaminare i frammenti di codice disponibili

È possibile visualizzare i frammenti di codice disponibili in Gestione frammenti di codice. Accedere a questa funzionalità da Strumenti>Gestione frammenti di codice e selezionare Python come linguaggio:

Screenshot che mostra Gestione frammenti di codice in Visual Studio.

Per creare frammenti personalizzati, vedere Procedura dettagliata: Creare un frammento di codice.

Se si scrive un frammento di codice particolarmente utile e si vuole condividerlo, pubblicarlo in un gist e segnalarlo a Microsoft. Potrebbe essere possibile includerlo in una versione futura di Visual Studio.

Il supporto di Python in Visual Studio offre diversi modi per spostarsi rapidamente all'interno del codice, incluse le librerie per le quali è disponibile il codice sorgente. È possibile trovare librerie con codice sorgente per la barra di spostamento, Vai a definizione, Vai a e Trova tutti i comandi riferimenti. È anche possibile usare il Visualizzatore oggetti di Visual Studio.

La barra di spostamento viene visualizzata nella parte superiore di ogni finestra dell'editor e include un elenco di definizioni su due livelli. L'elenco a discesa a sinistra contiene definizioni di classi e funzioni di primo livello nel file corrente. Nell'elenco a discesa a destra viene visualizzato un elenco di definizioni all'interno dell'ambito visualizzato a sinistra. Spostandosi nell'editor, gli elenchi vengono aggiornati in modo da indicare il contesto corrente ed è anche possibile selezionare una voce dagli elenchi per passarvi direttamente.

screenshot che mostra la barra di spostamento nell'editor di Visual Studio.

Suggerimento

Per nascondere la barra di spostamento, passare a Strumenti>Opzioni>Editor di testo>Python>Generale e deselezionare Impostazioni>Barra di spostamento.

Vai a definizione

Il comando Vai a definizione passa rapidamente dall'uso di un identificatore (ad esempio un nome di funzione, una classe o una variabile) alla posizione della definizione del codice sorgente. Per richiamare il comando, fare clic con il pulsante destro del mouse su un identificatore e scegliere Vai a definizione o posizionare il cursore nell'identificatore e selezionare F12. Il comando funziona tra il codice e le librerie esterne in cui è disponibile il codice sorgente. Se il codice sorgente della libreria non è disponibile, Vai a definizione passa all'istruzione pertinente import per un riferimento a un modulo o visualizza un errore.

Screenshot che mostra il comando Vai a definizione in Visual Studio.

Vai

Il comando Modifica>Vai a (CTRL+, ) visualizza una casella di ricerca nell'editor in cui è possibile digitare qualsiasi stringa e visualizzare le possibili corrispondenze nel codice che definisce una funzione, una classe o una variabile contenente tale stringa. La funzionalità di questo comando è simile a Vai a definizione, ma non richiede l'individuazione di un uso di un identificatore.

Per passare alla definizione dell'identificatore, fare doppio clic su qualsiasi nome o selezionare il nome con i tasti di direzione seguiti da Invio.

Screenshot che mostra il comando Vai a in Visual Studio.

Trova tutti i riferimenti

La funzionalità Trova tutti i riferimenti è un modo utile per individuare dove qualsiasi identificatore specificato è definito e usato, incluse le importazioni e le assegnazioni. Per richiamare il comando, fare clic con il pulsante destro del mouse su un identificatore e scegliere Trova tutti i riferimenti oppure posizionare il cursore nell'identificatore e selezionare MAIUSC+F12. È possibile fare doppio clic su un elemento nell'elenco per passare alla relativa posizione.

Screenshot che mostra i risultati trova tutti i riferimenti in Visual Studio.