GNU/Linux >> Znalost Linux >  >> Linux

Můžeme použít C kód v Pythonu?

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.


Linux
  1. Mohu nastavit Eclipse, aby zobrazoval změny kódu

  2. Mohu použít GDB k ladění běžícího procesu?

  3. Import modulu Python z Bash

  1. Jak mohu použít výstražný dialog s Pythonem v linuxu?

  2. Jak používat Qt v kódu Visual Studio?

  3. Python kód pro kontrolu, zda služba běží nebo ne.?

  1. Převod kódu Python 2 na Python 3

  2. Můžete použít kotvy ^ $ s Ls?

  3. Jak používat Python k dotazování WMI (Linux – Windows)