2013-10-14 4 views
1

Я кодировал что-то на работе, и кажется, что некоторые функции API C, предоставляемые python, не работают. Я пытался в основном функцию, которая проверить типы, например:Отсутствует функция API python 3

import ctypes 
python33_dll = ctypes.CDLL('python33.dll') 
a_float = python33_dll.PyFloat_FromDouble(ctypes.c_float(2.0)) 
python33_dll.PyFloat_Check(a_float) 
Traceback (most recent call last): 
    File "<pyshell#6>", line 1, in <module> 
    python33_dll.PyFloat_Check(a_float) 
    File "C:\Python33\lib\ctypes\__init__.py", line 366, in __getattr__ 
    func = self.__getitem__(name) 
    File "C:\Python33\lib\ctypes\__init__.py", line 371, in __getitem__ 
    func = self._FuncPtr((name_or_ordinal, self)) 
AttributeError: function 'PyFloat_Check' not found 

Есть ли что-либо конкретное, что нужно сделать, чтобы использовать эту функцию, или это ошибка?

docs.python.org/3.3/c-api/float.html?highlight=double#PyFloat_Check

ответ

1

PyFloat_Check() является a macro. Вам нужно будет развернуть его вручную и вместо этого вызвать правильную функцию.

+0

Можете ли вы дать мне другой совет о том, как это сделать? – Mac

+0

Вы еще не читали макрос? –

+0

Я не знаю много о C. Я ожидал бы, что это функция. Во всяком случае, если я вызываю PyObject_TypeCheck, он говорит, что он также не найден. – Mac

Смежные вопросы