Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и

Поиск

Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и

другие),

 

· управление подсчетом ссылок(макросы Py_INCREF(),Py_DECREF(),Py_XINCREF(),

 

Py_XDECREF(),Py_CLEAR()).Требуется при создании или удаленииPython-объектов вC/C++-коде.

 

· обработка исключений(PyErr*-функции и PyExc_*-константы,например,

 

PyErr_NoMemory() и PyExc_IOError)

· управление процессом и сервисы операционной системы(Py_FatalError(),

Py_Exit(),Py_AtExit(),PyOS_CheckStack(),и другие функции/макросы PyOS*),

 

· импорт модулей(PyImport_Import() и другие),

· поддержка сериализации объектов(PyMarshal_WriteObjectToFile(),

 

PyMarshal_ReadObjectFromFile() и т.п.)

· поддержка анализа строки аргументов(PyArg_ParseTuple(),PyArg_VaParse(),PyArg_ParseTupleAndKeywords(),PyArg_VaParseTupleAndKeywords(),PyArg_UnpackTuple() и Py_BuildValue()).С помощью этих функций облегчается задача получения в коде наCпараметров,заданных при вызове функции изPython.

 

Функции PyArg_Parse* принимают в качестве аргумента строку формата полученных аргументов,


 


· поддержка протоколов абстрактных объектов: +Протокол объекта

 

(PyObject_Print(), PyObject_HasAttrString(), PyObject_GetAttrString(), PyObject_HasAttr(),PyObject_GetAttr(),PyObject_RichCompare(), ...,PyObject_IsInstance(),PyCallable_Check(),PyObject_Call(),PyObject_Dir() и

 

другие).То,что должен уметь делать любой объектPython +Протокол числа

 

(PyNumber_Check(), PyNumber_Add(), ..., PyNumber_And(), ..., PyNumber_InPlaceAdd(), ...,PyNumber_Coerce(),PyNumber_Int(), ...).То,что должен делать любой объект,представляющий число+Протокол последовательности(PySequence_Check(),PySequence_Size(),PySequence_Concat(),PySequence_Repeat(),PySequence_InPlaceConcat(), ...,PySequence_GetItem(), ...,PySequence_GetSlice(),PySequence_Tuple(),

 

PySequence_Count(), ...) +Протокол отображения(например,словарь является отображением) (функции:PyMapping_Check(),PyMapping_Length(),PyMapping_HasKey(),PyMapping_Keys(), ...,PyMapping_SetItemString(),PyMapping_GetItemString() и др.) +Протокол итератора(PyIter_Check(),PyIter_Next()) +Протокол буфера(PyObject_AsCharBuffer(),PyObject_AsReadBuffer(),PyObject_AsWriteBuffer(),PyObject_CheckReadBuffer())

 

· поддержка встроенных типов данных.Аналогично описанному в предыдущем пункте,но уже для конкретных встроенных типов данных.Например: +Булевский объект(PyBool_Check()-проверка принадлежности типу PyBool_Type,Py_False-объект False,Py_True-объект True,

· управление памятью(то есть кучей интерпретатораPython) (функции

 

PyMem_Malloc(),PyMem_Realloc(),PyMem_Free(),PyMem_New(),PyMem_Resize(),

PyMem_Del()).Разумеется,можно применять и средства выделения памятиC/C++,однако,в этом случае не будут использоваться преимущества управления памятью интерпретатораPython (сборка мусора и т.п.).Кроме того,освобождение памяти нужно производить тем же способом,что и ее выделение.Еще раз стоит напомнить,что повторное освобождение одной и той же области памяти(а равно использование области памяти после ее освобождения)чревато серьезными ошибками,которые компиляторCне имеет возможности распознать.

 

· структуры для определения объектов встроенных типов(PyObject,PyVarObject и много других)

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 55; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.006 с.)