LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 255|回复: 0

python API 函数

[复制链接]
发表于 2024-1-24 17:34:11 | 显示全部楼层 |阅读模式


int PyArg_ParseTuple(PyObject *args, const char *format, ...)
属于 稳定 ABI.
解析一个函数的参数,表达式中的参数按参数位置顺序存入局部变量中。成功返回 true;失败返回 false 并且引发相应的异常。

int PyArg_VaParse(PyObject *args, const char *format, va_list vargs)
属于 稳定 ABI.
和 PyArg_ParseTuple() 相同,然而它接受一个 va_list 类型的参数而不是可变数量的参数集。

int PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], ...)
属于 稳定 ABI.
分析将位置参数和关键字参数同时转换为局部变量的函数的参数。 keywords 参数是关键字参数名称的 NULL 终止数组。 空名称表示 positional-only parameters。成功时返回 true;发生故障时,它将返回 false 并引发相应的异常。

在 3.6 版本发生变更: 添加了 positional-only parameters 的支持。

int PyArg_VaParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, char *keywords[], va_list vargs)
属于 稳定 ABI.
和 PyArg_ParseTupleAndKeywords() 相同,然而它接受一个va_list类型的参数而不是可变数量的参数集。

int PyArg_ValidateKeywordArguments(PyObject*)
属于 稳定 ABI.
确保字典中的关键字参数都是字符串。这个函数只被使用于 PyArg_ParseTupleAndKeywords() 不被使用的情况下,后者已经不再做这样的检查。

在 3.2 版本加入.

int PyArg_Parse(PyObject *args, const char *format, ...)
属于 稳定 ABI.
函数被用来析构“旧类型”函数的参数列表——这些函数使用的 METH_OLDARGS 参数解析方法已从 Python 3 中移除。这不被推荐用于新代码的参数解析,并且在标准解释器中的大多数代码已被修改,已不再用于该目的。它仍然方便于分解其他元组,然而可能因为这个目的被继续使用。

int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
属于 稳定 ABI.
一个更简单的形参提取形式,它不使用格式字符串来指定参数类型。 使用此方法来提取其形参的函数应当在函数或方法表中声明为 METH_VARARGS。 包含实际形参的元组应当作为 args 传入;它必须确实是一个元组。 该元组的长度必须至少为 min 且不超过 max; min 和 max 可能相等。 额外的参数必须被传给函数,每个参数应当是一个指向 PyObject* 变量的指针;它们将以来自 args 的值来填充; 它们将包含 借入引用。 对应于 args 未给出的可选形参的变量不会被填充; 它们应当由调用方来初始化。 此函数在执行成功时返回真值而在 args 不为元组或包含错误数量的元素时返回假值;如果执行失败则还将设置一个异常。

这是一个使用该函数的示例,取自 _weakref 弱引用辅助模块的源代码:

static PyObject *
weakref_ref(PyObject *self, PyObject *args)
{
    PyObject *object;
    PyObject *callback = NULL;
    PyObject *result = NULL;

    if (PyArg_UnpackTuple(args, "ref", 1, 2, &object, &callback)) {
        result = PyWeakref_NewRef(object, callback);
    }
    return result;
}
这个例子中调用 PyArg_UnpackTuple() 完全等价于调用 PyArg_ParseTuple():

PyArg_ParseTuple(args, "O|O:ref", &object, &callback)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表