Sie müssen nicht verlängern Python (was übrigens nicht trivial ist), kann aber fremde Funktionsschnittstellen wie ctypes verwenden .
Ich möchte diese C-Funktion oder ausführbare Dateien in Python aufrufen. Ist das möglich?
Ja, Sie können C-Code schreiben, der als Modul in Python importiert werden kann. Python ruft diese Erweiterungsmodule auf . Sie können es direkt aus Python aufrufen, ein Beispiel aus der Dokumentation:
Python-Code
import example
result = example.do_something()
C-Code
static PyObject * example(PyObject *self)
{
// do something
return Py_BuildValue("i", result);
}
Wenn ich möchte, dass der C-Code eine Bibliothek ist, was bedeutet, dass ich ihn mit #include und Verknüpfung des *.o wahrscheinlich in Python verwende, wie geht das oder ist das möglich?
Sie erstellen es als gemeinsam genutzte Bibliothek *.dll oder *.so Sie können auch die Verwendung von distutils zum Verteilen Ihres Moduls untersuchen.
Wenn ich den C-Code in eine ausführbare Datei schreibe, was bedeutet, dass er zu einem Befehl wird, kann ich ihn dann direkt in Python aufrufen?
Wenn Sie eine *.exe schreiben dann tun Sie das Gegenteil (Aufrufen von Python aus C). Die von Ihnen gewählte Methode (exe oder gemeinsam genutzte Bibliothek) hängt davon ab, ob Sie ein "C-Programm mit etwas Python" möchten oder ein "Python-Programm mit etwas C" .
Außerdem habe ich gehört, dass Python-Code kompiliert werden kann. Bedeutet das, dass wir den Code ohne die Quelldatei ausführen können? Sind die Ausgabedateien Binärdateien? Verbessert es die Leistung?
Python liest *.py Dateien und kompiliert zu *.pyc Bytecode Dateien, wenn Sie es ausführen. Der Bytecode wird dann in der virtuellen Python-Maschine ausgeführt. Das bedeutet, "das Ausführen derselben Datei beim zweiten Mal schneller ist, da eine erneute Kompilierung von der Quelle zum Bytecode vermieden werden kann." (aus dem Python-Glossar) Also, wenn Sie Ihre *.py nicht bearbeitet haben Dateien, wird die Datei *.pyc ausgeführt . Sie können *.pyc verteilen Dateien ohne *.py Dateien, sie sind jedoch nicht verschlüsselt und können rückentwickelt werden.