我试图将表达式作为默认参数添加到我的python函数API中,该函数由pybind11实现。
例如,下面是C++函数:
void my_print(std::chrono::system_clock::time_point tp = std::chrono::system_clock::now()) {
std::cout << tp << std::endl;
}
PYBIND11_MODULE(my_module, m) {
m.doc() = "my python module implement in pybind11";
m.def("my_print", &my_print, py::arg("tp") = std::chrono::system_clock::now());
}现在我很好奇,表达式= std::chrono::system_clock::now(),我希望每次我在python脚本中调用这个my_print API时都会调用它。
但我不确定,这个表达式是否每次在python中调用该API时都会被调用?或者这个表达式只在python中加载这个python模块时调用一次?
发布于 2022-01-08 11:40:52
在pybind绑定的(运行时)初始化过程中,将对其进行一次评估。
此特性的实现方式是由overloading operator= of py::arg返回另一种类型,py::arg_v (默认值为参数的缩写)。
https://stackoverflow.com/questions/70604358
复制相似问题