6 Stimmen

Verwendung von Cython .pxd-Dateien zur Erweiterung von reinen Python-Dateien

Dem Beispiel folgend, " Augementing .pxd "Ich versuche, ".pxd"-Dateien zu verwenden, um eine reine Python-Datei zu ergänzen. (Hinzufügen von Typdefinitionen außerhalb der reinen Python-Datei).

python-Datei:

class A(object):
    def foo(self, i=3, x=None):
        print "Big" if i > 1000 else "Small"

pxd-Datei:

cdef class A:
    cpdef foo(self, int i, x)

Ich habe ein Wörterbuch, das ich standardmäßig auf "None" in Python bin. Leider mag Cython das nicht.

Wenn ich meine "reine" Python-Datei verwende, ohne einen Typ zu deklarieren oder den Typ als "dict" in der pxd-Datei zu deklarieren, bekomme ich den Fehler:

"Unterschrift nicht kompatibel mit vorheriger Erklärung"

Ich habe festgestellt, dass es kompiliert wird, wenn ich KEINEN Standardwert angebe, aber es gibt einen Grund für die Deklaration der Standardwerte.

Gibt es eine Möglichkeit, dies zu regeln?

14voto

pyfunc Punkte 63257

Optionale Argumente in cpdef-Funktionen werden anders deklariert als in cdef-Funktionen, die im Wesentlichen mit Python-Funktionen identisch sind.

Ihre .pxd-Datei sollte so geändert werden, dass sie wie folgt geschrieben wird

cdef class A:
    cpdef foo(self, int i=*, x=*)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X