GNU/Linux >> Tutoriales Linux >  >> Linux

¿Podemos usar código C en Python?

No es necesario extender Python (que no es trivial, por cierto), pero puede usar una interfaz de función externa como ctypes .


Quiero invocar esas funciones C o ejecutables en python. ¿Es eso posible?

Sí, puede escribir código C que se puede importar a Python como un módulo. Python llama a estos módulos de extensión . Puede invocarlo directamente desde Python, un ejemplo de la documentación:

Código Python

import example
result = example.do_something()

Código C

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

Si quiero que el código C sea una biblioteca, lo que significa que lo uso con #include y vinculación de *.o probablemente en python, cómo hacerlo o si es posible.

Lo creas como una biblioteca compartida *.dll o *.so También puede investigar el uso de distutils para distribuir su módulo.

Si escribo el código C en un ejecutable, lo que significa que se convierte en un comando, ¿puedo invocarlo directamente en Python?

Si escribe un *.exe entonces estás haciendo lo contrario (invocando a Python desde C). El método que elija (exe o biblioteca compartida) depende de si desea un "programa C con algo de Python" o un "Programa Python con algo de C" .

Además, escuché que el código Python se puede compilar, ¿eso significa que podemos ejecutar el código sin el archivo fuente? ¿Los archivos de salida son archivos binarios? ¿Mejora el rendimiento?

Python lee *.py archivos y compila a *.pyc código de bytes archivos cuando lo ejecuta. Luego, el código de bytes se ejecuta en la máquina virtual de Python. Esto significa que "ejecutar el mismo archivo es más rápido la segunda vez, ya que se puede evitar la recompilación desde la fuente al código de bytes". (del glosario de Python) Entonces, si no ha editado su *.py archivos, ejecutará el *.pyc . Puede distribuir *.pyc archivos sin *.py archivos, sin embargo, no están encriptados y se les puede aplicar ingeniería inversa.


Linux
  1. ¿Puedo configurar Eclipse para mostrar cambios de código?

  2. Cómo usar la exportación con Python en Linux

  3. ¿Puedo usar GDB para depurar un proceso en ejecución?

  4. Importación del módulo Python desde Bash

  5. ¿Cómo puedo configurar el 'backend' en matplotlib en Python?

Más de 10 mejores IDE de Python para Linux

Qué es Python:una introducción a un lenguaje de programación multiplataforma

Cómo usar conjuntos en Python

¿Cómo puedo perfilar el código C++ que se ejecuta en Linux?

¿Puedo usar APT en TinyCore?

¿Puedo usar ufw para configurar un reenvío de puerto?