Vous n'avez pas besoin d'prolonger Python (ce qui n'est pas trivial, d'ailleurs), mais peut utiliser une interface de fonction étrangère telle que ctypes .
Je veux invoquer ces fonctions C ou exécutables en python. Est-ce possible.
Oui, vous pouvez écrire du code C qui peut être importé dans Python en tant que module. Python appelle ces modules d'extension . Vous pouvez l'invoquer directement depuis Python, un exemple de la documentation :
Code Python
import example
result = example.do_something()
Code C
static PyObject * example(PyObject *self)
{
// do something
return Py_BuildValue("i", result);
}
Si je veux que le code C soit une bibliothèque, ce qui signifie que je l'utilise avec #include et la liaison du *.o probablement en python, comment le faire ou est-ce possible.
Vous le construisez comme une bibliothèque partagée *.dll ou *.so Vous pouvez également étudier l'utilisation de distutils pour distribuer votre module.
Si j'écris le code C dans un exécutable, ce qui signifie qu'il devient une commande, puis-je l'invoquer directement en python ?
Si vous écrivez un *.exe alors vous faites le contraire (invoquer Python à partir de C). La méthode que vous choisissez (exe vs bibliothèque partagée) dépend si vous voulez un "programme C avec du Python" ou un "programme Python avec du C" .
De plus, j'ai entendu dire que le code python peut être compilé, cela signifie-t-il que nous pouvons exécuter le code sans le fichier source ? Les fichiers de sortie sont-ils des fichiers binaires ? Améliore-t-il les performances ?
Python lit *.py fichiers et compile en *.pyc bytecode fichiers lorsque vous l'exécutez. Le bytecode est ensuite exécuté dans la machine virtuelle Python. Cela signifie "l'exécution du même fichier est plus rapide la deuxième fois car la recompilation de la source au bytecode peut être évitée." (du glossaire Python) Donc, si vous n'avez pas modifié votre *.py fichiers, il exécutera le fichier *.pyc . Vous pouvez distribuer *.pyc fichiers sans *.py fichiers, mais ils ne sont pas chiffrés et peuvent faire l'objet d'une ingénierie inverse.