Wie extrahiere ich die Namen von einer einfachen Funktion?
-
13-09-2020 - |
Frage
Ich habe diesen Code-Stück:
generasacodicetagpre.Von der Funktion 'Func' würde ich gerne extrahieren:
generasacodicetagpre.oder so etwas wie:
generasacodicetagpre.bearbeitet
etwas Hintergrund, um zu erklären, warum ich denke, dass ich das tun muss
Ich möchte den Code einer trivialen Python-Funktion in eine Tabellenkalkulationsformel konvertieren.
also muss ich konvertieren:
generasacodicetagpre.an:
generasacodicetagpre.Beispielstrecke http://img441.imageshack.us/img441/1451/84516405. png
** erneut bearbeitet *
was ich bisher habe.
Das Programm unter den Ausgängen:
generasacodicetagpre.Der Code:
generasacodicetagpre.Ich habe hier einige Ressourcen gefunden: Python-Internals: Arbeit mit Python Asts Ich packte ein funktionierendes Codegen-Modul hier . .
Lösung
Ausgang:
generasacodicetagpre.Andere Tipps
Ich bin nicht sicher, warum Sie Namen zurückgreifen müssen, eine sehr grobe Methode, um alle Namen und Punkte in der Funktion zu erhalten, ist
generasacodicetagpre.Ausgang:
generasacodicetagpre.Kann man sein, dass Sie sich verbessern können, indem Sie das Syntaxbaum elegant lesend lesen, ich benutze Parser anstelle von AST-Modul, weil ich auf Python 2.5
binIch habe das neue AST-Modul noch nicht benutzt, aber ich habe Code, der den älteren Compiler verwendet, um etwas Ähnliches zu erreichen:
generasacodicetagpre.Code leicht paraphrasiert, hätte ich vielleicht unbeabsichtigte Bugs eingeführt.Ich hoffe, das gibt Ihnen die allgemeine Idee: Sie müssen sowohl Name als auch Getattr-Knoten besuchen und gepunktete Namen erstellen und damit auch mit der Tatsache befassen, dass Sie auch alle Zwischenwerte sehen (z. B. "foo" und "foo.bar")).