[英]Why function is static in python?
如果我们想使用内部Python API将C / C ++集成到python中。 然后功能的签名采用以下形式
static PyObject *MyFunction( PyObject *self, PyObject *args );
static PyObject *MyFunctionWithKeywords(PyObject *self,
PyObject *args,
PyObject *kw);
static PyObject *MyFunctionWithNoArgs( PyObject *self );
为什么这些函数实现为静态?
来自文档 :
因此,便携性不需要对符号可见性做出任何假设。 这意味着扩展模块中的所有符号都应声明为
static
,但模块的初始化函数除外,以避免与其他扩展模块的名称冲突(如模块的方法表和初始化函数一节中所述)。 这意味着必须以不同的方式导出应该可以从其他扩展模块访问的符号。
所以你在问static
意味着什么。
这意味着这些函数仅在声明它们的文件中可用,以便不与其他定义冲突并污染名称空间。
这些文件是静态的原因是因为,这些将映射所有python函数,看看它们如何涵盖可能的函数声明的所有排列。 这些只能在该文件中创建。
因此它们仅在定义它们的文件中可用。 不污染全局名称空间。
在C中的函数之前的关键字static
意味着该函数在转换单元外部(大致是包含头文件之后的源文件)不可见,其中定义了该函数。 它为函数提供了“内部链接”(用C语言表示),因此它对文件是“私有的”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.