Wie extrahiere ich die Namen aus einer einfachen Funktion?

9

Ich habe dieses Stück Code:

%Vor%

Von Funktion 'func' möchte ich extrahieren:

%Vor%

oder so ähnlich:

%Vor%

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:

%Vor%

zu:

%Vor%

Beispiel-Tabelle http://img441.imageshack.us/img441/1451/84516405.png

** erneut bearbeitet *

Was ich bis jetzt habe.

Das folgende Programm gibt aus:

%Vor%

Der Code:

%Vor%

Ich habe hier einige Ressourcen gefunden: Python-Interna: Arbeiten mit Python ASTs Ich habe mir ein funktionierendes Codegen-Modul geschnappt hier .

    
Eddy Pronk 09.07.2010, 13:09
quelle

3 Antworten

4
%Vor%

Ausgabe:

%Vor%     
Eddy Pronk 11.07.2010, 09:47
quelle
1

Ich bin mir nicht sicher, warum Sie Namen zurückholen müssen, eine sehr grobe Methode, um alle Namen und Punkte in Funktion zu bringen, ist

%Vor%

Ausgabe:

%Vor%

Vielleicht können Sie das verbessern, indem Sie den Syntaxbaum eleganter lesen, ich benutze Parser anstelle von Modul, weil ich auf Python 2.5 bin

    
Anurag Uniyal 09.07.2010 13:58
quelle
0

Ich habe das neue ast-Modul noch nicht benutzt, aber ich habe einen funktionierenden Code, der den älteren compiler.ast verwendet, um etwas Ähnliches zu erreichen:

%Vor%

Code leicht paraphrasiert, ich habe möglicherweise unbeabsichtigte Bugs eingeführt. Ich hoffe, das gibt Ihnen die allgemeine Idee: Sie müssen sowohl Name- als auch Getattr-Knoten aufrufen und gepunktete Namen konstruieren und auch damit umgehen, dass Sie auch alle Zwischenwerte sehen (zB 'foo' und 'foo.bar' ).

    
Marius Gedminas 10.07.2010 11:57
quelle