首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次调用python时,是否都会调用pybind11默认的arugments表达式?

每次调用python时,是否都会调用pybind11默认的arugments表达式?
EN

Stack Overflow用户
提问于 2022-01-06 08:29:52
回答 1查看 96关注 0票数 0

我试图将表达式作为默认参数添加到我的python函数API中,该函数由pybind11实现。

例如,下面是C++函数:

代码语言:javascript
复制
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模块时调用一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 11:40:52

在pybind绑定的(运行时)初始化过程中,将对其进行一次评估。

此特性的实现方式是由overloading operator= of py::arg返回另一种类型,py::arg_v (默认值为参数的缩写)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70604358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档