Issues with using C code in Python | Set 1
Issue #1 : If using ctypes then there is a problem that the original C code may use language that don’t map cleanly to Python.
Let’s take the example of
divide() function as it returns a value through one of its arguments. It is a common C technique but it is often not clear how it is supposed to work in Python.
Traceback (most recent call last): File "", line 1, in ctypes.ArgumentError: argument 3: : expected LP_c_int instance instead of int
Issue #2 :
Even if it works, then there is a violation of Python’s immutability of integers. For arguments involving pointers, a compatible ctypes object has to be constructed and is pass as in the given code below.
divide(10, 3, x) : 3 x.value : 1
Issue #3 :
In the code below, an instance of a ctypes.c_int is created and is passed in as the pointer object .c_int object can be mutated unlike a normal Python integer. To either retrieve or change the value, .value attribute can be used.
Issue #4 : The
avg() function is a challenge.
The underlying C code expects a length representing an array and to receive a pointer. However, from the Python side in practice, a Python “array” can take many different forms, it can be array, list, tuple or numpy array and maybe you would like to support multiple possibilities.
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course