2012-07-10 20 views
8

C'è un modo per PyCharm per mostrare da dove viene chiamata una determinata funzione Python?pycharm trova dove viene chiamata la funzione Python

Attualmente mi affido semplicemente alla ricerca del nome della funzione attraverso il progetto e spesso funziona bene, ma se il nome di una funzione è vago ci sono molti colpi sbagliati. Mi chiedo se mi manca una funzione da qualche parte, ad es. forse i risultati della ricerca potrebbero essere ulteriormente ristretti per mostrare solo dove i moduli importano il modulo da cui sto cercando?

risposta

10

In PyCharm è possibile selezionare una funzione e premere Alt + Maiusc + F7 per eseguire una ricerca di utilizzo. È anche disponibile in "Modifica → Trova → Trova usi". Sembra che sia più intelligente di una ricerca di testo.

L'utilizzo dell'analisi statica per individuare il percorso da cui è chiamata una funzione è in generale difficile in Python perché utilizza l'associazione dinamica e ha molta introspezione, quindi è molto facile che i falsi positivi vengano persi. Nel caso di funzioni a livello di modulo, penso che una buona soluzione sia quella di usare sempre module.function per chiamare la funzione e non fare mai un from module import function. In questo modo puoi eseguire una ricerca testuale per 'module.function'. Le guide in stile Python generalmente consigliano di importare le funzioni ecc. In questo modo, quindi penso che questo sia generalmente accettato come buona pratica.

Trovare chiamate di metodo è ovviamente molto più difficile. Una delle cose che mi piace dello sviluppo in Java e C# è la possibilità di trovare tutti gli usi di un metodo mediante analisi statica.

+0

Questo sembra essere esattamente la funzione che stavo cercando, grazie. Io uso spesso "importa come" per rendere gli spazi dei nomi più gestibili, ma il lato negativo è che la ricerca diventa ancora più complicata. –

+1

Nelle versioni successive di PyCharm, l'associazione "Trova usi" è stata modificata in "". Per qualche motivo, ma soprattutto solo perché. In caso contrario, questa voce di menu ora si trova in "Modifica → Trova → Trova usi". Perché le operazioni di "ricerca" di sola lettura possano essere utilizzate come "Modifica" di livello superiore anziché "Visualizza" o "Naviga", è la peggiore ipotesi di qualcuno. (_Io ho nuthin '._) –

2

Premere il tasto Ctrl e contemporaneamente passare il mouse sopra l'intestazione della funzione. Il nome della funzione deve essere evidenziato. Fare clic sul nome della funzione per ottenere un elenco di tutte le istanze in cui viene chiamata la funzione.

Se si preme il tasto Ctrl e si passa contemporaneamente il mouse su una chiamata di funzione, il nome della funzione verrà evidenziato e facendo clic su di esso verrà visualizzata la definizione della funzione.

Problemi correlati