Gibt es eine Möglichkeit für PyCharm zu zeigen, woher eine bestimmte Python-Funktion aufgerufen wird?
Ich verlasse mich derzeit darauf, einfach nach dem Funktionsnamen im Projekt zu suchen, und das funktioniert oft gut, aber wenn ein Funktionsname vage ist, gibt es viele falsche Treffer. Ich frage mich, ob ich irgendwo ein Feature vermisse, z.B. Vielleicht könnten die Suchergebnisse weiter eingegrenzt werden, um nur zu zeigen, wo Module das Modul importieren, von dem ich suche?
In PyCharm können Sie eine Funktion auswählen und Alt + Shift + F7 drücken, um eine Verwendungssuche auszuführen. Sie finden es auch unter "Bearbeiten → Suchen → Usage suchen". Es sieht so aus, als wäre es intelligenter als eine Textsuche.
Die Verwendung der statischen Analyse, um herauszufinden, woher eine Funktion aufgerufen wird, ist in Python generell schwierig, da sie dynamisches Binden verwendet und eine Menge Introspektion aufweist, so dass es sehr leicht ist, Fehlalarme durch Fehlalarme zu bekommen. Im Fall von Funktionen auf Modulebene halte ich es für eine gute Lösung, immer module.function
zum Aufruf der Funktion zu verwenden und niemals from module import function
. Auf diese Weise können Sie eine Textsuche für 'module.function' durchführen. Python-Style-Guides empfehlen generell, dass Sie Funktionen usw. auf diese Weise importieren, daher halte ich das für eine allgemein anerkannte gute Praxis.
Das Finden von Methodenaufrufen ist natürlich viel schwieriger. Eine der Sachen, die ich an der Entwicklung in Java und C # mag, ist, dass ich alle Verwendungen einer Methode durch statische Analyse finden kann.
Drücken Sie die Strg-Taste und bewegen Sie gleichzeitig die Maus über den Funktions-Header. Der Funktionsname sollte hervorgehoben werden. Klicken Sie auf den Funktionsnamen, um eine Liste aller Instanzen zu erhalten, in denen die Funktion aufgerufen wird.
Wenn Sie die Strg-Taste drücken und gleichzeitig mit der Maus über einen Funktionsaufruf fahren, wird der Funktionsname hervorgehoben und ein Klick darauf führt Sie zur Funktionsdefinition.