python可选参数到可选参数验证

2024-09-27 04:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,如何验证可选到可选的关键字参数?在

这个问题是对我的this question的一个扩展,关于可选参数的问题,(顺便问一下,它有更好的名称吗?)在

我们知道我们可以用这种方式定义可选参数:

os.fdopen(fd[, mode[, bufsize]])

因此,如果我错误地通过fdopen(sth, bufsize=16)调用fdopen,python会指出我必须指定mode才能使用bufsize参数。在

这是如何实施的?如果真的能做到这一点,我显然可以写很多东西,但这会导致那些非常复杂的函数的代码变得一团糟,例如:

^{pr2}$

Tags: 函数名称参数定义osmode错误方式
1条回答
网友
1楼 · 发布于 2024-09-27 04:22:22

在Python级别并没有具体的语法。您必须定义普通的可选参数并自己进行验证。在


你所看到的具体案例是用C语言实现的。根据你所处的平台,C语言的实现是不同的。Here's the version for POSIX, Windows, and OS/2:

static PyObject *
posix_fdopen(PyObject *self, PyObject *args)
{
    ...
    if (!PyArg_ParseTuple(args, "i|si", &fd, &orgmode, &bufsize))
        return NULL;

使用PyArg_ParseTuple意味着这个函数实际上不接受任何按名称命名的参数。如果执行os.fdopen(sth, bufsize=16),则会出现一个类型错误:

^{pr2}$

注意,bufsize参数依赖于mode参数是没有真正原因的。我认为这个函数可能早于关键字参数,尽管很难确定。关键字参数被添加到Pythonall the way back in 1.3,以及python.org网站代表1.4,此时^{} was definitely around。在

相关问题 更多 >

    热门问题