2013-02-22 26 views
7

Dire che sto lavorando con la libreria Python 'requests'.Pycharm: completamento del codice che non fornisce raccomandazioni

req = requests.get("http://google.com") 

Ora, dopo questo, se digito req., dovrei ottenere un elenco di tutti i metodi che possono accedere. Ma per qualche ragione non lo faccio, anche se premo manualmente ctrl-space.

Se provo questo in ipython, ottengo i consigli di completamento automatico. Anche se provo tramite la console python integrata in pycharm, ottengo consigli.

Perché sta succedendo?

risposta

15

Poichè Python è un linguaggio tipizzato in modo dinamico, è necessario assicurarsi che possa determinare il tipo di elementi e controllare correttamente le librerie sul sistema. Cerca di assicurarti che sia chiaro di che tipo si trova l'oggetto nel tuo codice.

Un buon metodo aggiunto di recente (2.7) è di abilitare il rilevamento del tipo di runtime: PyCharm si collega al programma mentre è in esecuzione (durante il debug) e controlla i tipi di variabili mentre vengono utilizzati.

È possibile abilitare ciò andando alle preferenze, quindi selezionando "Python Debugger" e scegliendo "Raccogli informazioni sui tipi di runtime per l'analisi del codice".

Preferences screen of PyCharm

È possibile anche 'dire' PyCharm utilizzando Epydoc o stile Sfinge docstrings che contengono informazioni sui tipi di parametri e valori di ritorno. PyCharm userà questi per migliorare le sue ispezioni.

6

Python è un linguaggio digitato in modo dinamico, il che significa che la funzione "get" non dichiara il suo tipo restituito. Quando inserisci il codice in IPython o nella console PyCharm, il codice viene effettivamente eseguito ed è possibile esaminare l'istanza dell'oggetto nell'interprete corrente e ottenere l'elenco dei suoi metodi. Quando inserisci il codice in PyCharm o in qualsiasi altro IDE Python, non viene eseguito ed è possibile utilizzare l'analisi statica solo per dedurre il tipo di ritorno del metodo. Questo non è possibile in tutti i casi.

Problemi correlati