Není nutné prodlužovat Python (který není triviální, mimochodem), ale může používat rozhraní cizích funkcí, jako jsou ctypes .
Chci vyvolat tyto funkce C nebo spustitelné soubory v pythonu. Je to možné.
Ano, můžete napsat C kód, který lze importovat do Pythonu jako modul. Python nazývá tyto rozšiřující moduly . Můžete jej vyvolat přímo z Pythonu, příklad z dokumentace:
Kód Pythonu
import example
result = example.do_something()
Kód C
static PyObject * example(PyObject *self)
{
// do something
return Py_BuildValue("i", result);
}
Pokud chci, aby kód C byl knihovnou, což znamená, že jej používám s #include a propojením *.o pravděpodobně v pythonu, jak to udělat nebo je to možné.
Vytvoříte ji jako sdílenou knihovnu *.dll nebo *.so Můžete také prozkoumat použití distutils k distribuci vašeho modulu.
Pokud napíšu kód C do spustitelného souboru, což znamená, že se stane příkazem, mohu jej vyvolat přímo v pythonu?
Pokud napíšete *.exe pak děláte opak (vyvoláte Python z C). Zvolená metoda (exe vs sdílená knihovna) závisí na tom, zda chcete "program C s nějakým Pythonem" nebo "program Python s nějakým C" .
Také jsem slyšel, že kód pythonu lze zkompilovat, znamená to, že můžeme spustit kód bez zdrojového souboru? Jsou výstupní soubory binární soubory? Zlepší to výkon?
Python čte *.py soubory a zkompiluje se do *.pyc bytecode soubory, když jej spustíte. Bytecode se pak spustí na virtuálním počítači Python. To znamená "spuštění stejného souboru je podruhé rychlejší, protože se lze vyhnout rekompilaci ze zdrojového na bytekód." (ze glosáře Pythonu) Pokud jste tedy neupravili *.py soubory, spustí soubor *.pyc . Můžete distribuovat *.pyc soubory bez *.py soubory, ale nejsou šifrované a lze je reverzně analyzovat.