Python: tief in den Knotenbaum kopieren

8

Ich versuche, deepcopy (aus dem copy -Modul) zu verwenden, um einen Knotenbaum aus dem ast -Modul zu kopieren.

Das scheint nicht zu funktionieren. Ich bekomme seltsame Fehler wie TypeError: required field "name" missing from FunctionDef , wenn ich das kopierte Ergebnis verwende (und ich habe es überprüft; es fehlt wirklich im kopierten Knoten), also hat es sie nicht korrekt kopiert.

Gibt es einen Trick, den ich dazu bringen kann? Oder vielleicht fehlt mir etwas?

    
Albert 21.07.2011, 14:34
quelle

1 Antwort

8

Tut mir leid, ich habe mich geirrt. copy.deepcopy scheint korrekt zu funktionieren. Der Grund, warum ich dachte, es würde nicht funktionieren, liegt an diesem sehr merkwürdigen Verhalten:

%Vor%

Dies gibt None in PyPy zurück. Wahrscheinlich ein Fehler, weil ich in CPython 2.6 foo bekomme. Seltsamerweise, in PyPy, wenn ich name=None aus dem Aufruf ast.FunctionDef entferne, bekomme ich auch foo als Ausgabe.

Ich habe einen Fehlerbericht für PyPy dazu erstellt.

    
Albert 21.07.2011, 15:10
quelle