Встраивание Python - как получить поведение проверки правдивости if () из C / C ++? - PullRequest
2 голосов
/ 25 апреля 2009

Я пытаюсь написать функцию, которая возвращает значение истинности данного PyObject. Эта функция должна возвращать то же значение, что и проверка истинности if () - пустые списки и строки имеют значение False и т. Д. Я искал заголовки python / include, но не нашел ничего, что могло бы сделать это. Наиболее близким я был PyObject_RichCompare () с True в качестве второго значения, но он возвращает False для «1» == True, например. Есть ли удобная функция для этого, или мне нужно проверять последовательность типов и выполнять специальные тесты для каждого возможного типа? Что делает внутренняя реализация if ()?

Ответы [ 2 ]

5 голосов
/ 25 апреля 2009

Не правда ли, в object.h:

PyAPI_FUNC(int) PyObject_IsTrue(PyObject *);

1 голос
/ 25 апреля 2009

Используйте

int PyObject_IsTrue(PyObject *o)
Возвращает 1, если объект o считается истинным, и 0 в противном случае. Это эквивалентно выражению Python not not o. В случае неудачи верните -1.

(из Справочное руководство по API Python / C )

...