2012-07-10 11 views
8

¿Hay alguna manera de que PyCharm muestre desde dónde se llama a una determinada función de Python?pycharm find donde se llama la función Python

Actualmente confío en simplemente buscar el nombre de la función en todo el proyecto y esto a menudo funciona bien, pero si el nombre de una función es vago, hay muchos hits incorrectos. Me pregunto si me falta una función en alguna parte, p. tal vez los resultados de búsqueda podrían reducirse aún más para mostrar solo dónde los módulos importan el módulo que estoy buscando?

Respuesta

10

En PyCharm puede seleccionar una función y presione Alt + Shift + F7 a ejecutar una búsqueda uso. También está disponible en "Editar → Buscar → Buscar usos". Parece que es más inteligente que una búsqueda de texto.

El uso de análisis estático para encontrar el origen de una función es, en general, difícil en Python porque usa enlace dinámico y tiene mucha introspección, por lo que es muy fácil obtener falsos positivos. En el caso de las funciones a nivel de módulo, creo que una buena solución es usar siempre module.function para llamar a la función y nunca hacer un from module import function. De esta forma, puede hacer una búsqueda de texto para 'module.function'. Las guías de estilo de Python generalmente recomiendan que importe funciones, etc. de esta manera, así que creo que esto es una buena práctica generalmente aceptada.

Encontrar llamadas de método es, por supuesto, mucho más difícil. Una de las cosas que me gusta de desarrollar en Java y C# es poder encontrar todos los usos de un método mediante análisis estático.

+0

Parece ser exactamente la característica que estaba buscando, gracias. A menudo uso 'import as' para hacer que los espacios de nombres sean más manejables, pero la desventaja es que la búsqueda se vuelve aún más complicada. –

+1

En versiones posteriores de PyCharm, el enlace "Encontrar usos" ha cambiado a ''. Por alguna razón, pero principalmente solo porque. En su defecto, este elemento del menú ahora vive en "Editar → Buscar → Buscar usos". Por qué las operaciones de "Buscar" solo de lectura vivirían bajo los menús "Editar" en lugar de "Ver" o "Navegar" es la peor suposición de cualquiera. (_Tengo nuthin '._) –

2

Presione la tecla Ctrl y al mismo tiempo pase el mouse sobre el encabezado de la función. El nombre de la función debe resaltarse. Haga clic en el nombre de la función para obtener una lista de todas las instancias donde se llama a la función.

Si presiona la tecla Ctrl y al mismo tiempo coloca el mouse sobre una llamada a la función, el nombre de la función se resaltará y al hacer clic en él se abrirá la definición de la función.

Cuestiones relacionadas