使用None
作为可选参数的默认值是python的。例如,使用None
作为字符串参数的默认值:
def f(str_arg=None):
if str_arg is None:
str_arg = get_str_arg_default()
...
因此f()
接受参数str_arg
的两种类型:字符串或None
。
现在,我们使用Boost Python在c++中实现这个函数。我如何使Boost Python接受字符串和None
类型的参数?
你能让函数接受boost::python::object
吗?然后你可以通过调用is_none()
来检查它是否为None
。
请参阅https://wiki.python.org/moin/boost.python/FAQ#How_can_I_check_returning_Python_value_for_None.3F,其中给出了检查对象是否为None
的几个建议-例如arg.ptr() == object().ptr()
, arg.ptr() == Py_None
或arg.is_none()
。