Python Language Bonjour tout le monde avec l'extension C


Exemple

Le fichier source C suivant (que nous appellerons hello.c à des fins de démonstration) produit un module d'extension nommé hello qui contient une seule fonction greet() :

#include <Python.h>
#include <stdio.h>

#if PY_MAJOR_VERSION >= 3
#define IS_PY3K
#endif

static PyObject *hello_greet(PyObject *self, PyObject *args)
{
    const char *input;
    if (!PyArg_ParseTuple(args, "s", &input)) {
        return NULL;
    }
    printf("%s", input);
    Py_RETURN_NONE;
}

static PyMethodDef HelloMethods[] = {
    { "greet", hello_greet, METH_VARARGS, "Greet the user" },
    { NULL, NULL, 0, NULL }
};

#ifdef IS_PY3K
static struct PyModuleDef hellomodule = {
    PyModuleDef_HEAD_INIT, "hello", NULL, -1, HelloMethods
};

PyMODINIT_FUNC PyInit_hello(void)
{
    return PyModule_Create(&hellomodule);
}
#else
PyMODINIT_FUNC inithello(void)
{
    (void) Py_InitModule("hello", HelloMethods);
}
#endif

Pour compiler le fichier avec le compilateur gcc , exécutez la commande suivante dans votre terminal préféré:

gcc /path/to/your/file/hello.c -o /path/to/your/file/hello

Pour exécuter la fonction greet() que nous avons écrite précédemment, créez un fichier dans le même répertoire et appelez-le hello.py

import hello          # imports the compiled library
hello.greet("Hello!") # runs the greet() function with "Hello!" as an argument