如何接受 Boost Python 函数的字符串或 None 参数
How to accept both string or None argument to Boost Python function
使用 None
作为可选参数的默认值是 Pythonic。例如,使用 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()
。
使用 None
作为可选参数的默认值是 Pythonic。例如,使用 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()
。