GNU/Linux >> Linux Esercitazione >  >> Linux

Possiamo usare il codice C in Python?

Non è necessario estendere Python (che non è banale, btw), ma può utilizzare un'interfaccia di funzioni esterne come ctypes .


Voglio invocare quelle funzioni C o eseguibili in Python. È possibile?

Sì, puoi scrivere codice C che può essere importato in Python come modulo. Python chiama questi moduli di estensione . Puoi invocarlo direttamente da Python, un esempio dalla documentazione:

Codice Python

import example
result = example.do_something()

Codice C

static PyObject * example(PyObject *self)
{
    // do something
    return Py_BuildValue("i", result);
}

Se voglio che il codice C sia una libreria, il che significa che lo uso con #include e il collegamento di *.o probabilmente in Python, come farlo o è possibile.

Lo crei come una libreria condivisa *.dll o *.so Puoi anche indagare usando distutils per distribuire il tuo modulo.

Se scrivo il codice C in eseguibile, il che significa che diventa un comando, posso invocarlo direttamente in Python?

Se scrivi un file *.exe allora stai facendo il contrario (invocando Python da C). Il metodo che scegli (exe vs libreria condivisa) dipende se vuoi un "programma C con un po' di Python" o un "Programma Python con un po' di C" .

Inoltre, ho sentito che il codice Python può essere compilato, significa che possiamo eseguire il codice senza il file sorgente? I file di output sono file binari? Migliora le prestazioni?

Python legge *.py file e compila in *.pyc bytecode file quando lo esegui. Il bytecode viene quindi eseguito nella macchina virtuale Python. Ciò significa "l'esecuzione dello stesso file è più veloce la seconda volta poiché si può evitare la ricompilazione dal sorgente al bytecode." (dal glossario Python) Quindi, se non hai modificato il tuo file *.py file, eseguirà il file *.pyc . Puoi distribuire *.pyc file senza *.py file, tuttavia non sono crittografati e possono essere decodificati.


Linux
  1. Posso configurare Eclipse per mostrare le modifiche al codice

  2. Come utilizzare l'esportazione con Python su Linux

  3. Posso utilizzare GDB per eseguire il debug di un processo in esecuzione?

  4. Importazione del modulo Python da Bash

  5. Python può rilevare su quale sistema operativo è in esecuzione?

Conversione del codice Python 2 in Python 3

Oltre 10 migliori IDE Python per Linux

Cos'è Python:un'introduzione a un linguaggio di programmazione multipiattaforma

Come utilizzare Python per eseguire query su WMI (Linux – Windows)

Come usare i set in Python

Come posso profilare il codice C++ in esecuzione su Linux?