ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python不接受关键字参数

2019-10-08 07:57:25  阅读:162  来源: 互联网

标签:keyword-argument python


我试图使我的代码不接受关键字参数,就像一些bulitins也不接受关键字参数,但是,我无法这样做.在这里,根据我的有限理解,我的想法是: –

def somefunc(a,b):
    print a,b

somefunc(10,20)

输出:

10 20

现在,当我运行以下内容时(我知道这不是函数定义中的关键字参数,但是,查看函数调用,它似乎与调用接受关键字参数的函数时的语法相同) :

somefunc(b=10,a=20)

输出:

20 10

我有两个问题: –

>查看函数调用somefunc(b = 10,a = 20)而不是函数定义,这似乎是对一个只接受普通参数的函数的调用或接受关键字参数的函数.口译员如何区分两者?
>是否有可能在表单中转换我们的任何函数,以便它不像许多内置函数那样接受关键字参数?

为什么我要这样做呢?
我只是在检查我是否可以这样做,所以我不会错过任何深入理解python的东西.我知道python是否允许这样做.

解决方法:

ad 1)正确的名称由Python自动验证,如果它们被称为somefunct(name = value,…).我不需要记住参数的确切标准顺序,并通过每个月在每次使用时查看文档来验证它太“神经质”,如果我记得一个具有良好描述性参数名称的函数,它将被测试它们被接受通过Python.相反,使用参数的正确顺序只能通过文档验证.通过命名参数调用优先于非常长的位置参数列表.因此,报告的行为是有根据的. (简短的单字母参数“a,b”当然不能帮助解决错误.)

ad 2)一些众所周知的内置快速函数用C语言编写,具有少量固定数量的必需参数,不支持使用命名参数调用. (例如hasattr)

这是因为它们只使用简单的标题…(… PyObject * args),因此所有命名的参数都会被自动拒绝. (Python无法反省C源代码中的参数名称.:-)

许多其他C函数都有一个标题…(… PyObject * args,PyObject * kwds),它们通过实现更复杂的验证PyArg_ParseTupleAndKeywords并将名称写入docs字符串,明确地支持名称的精确列表.

编辑:改进英语

标签:keyword-argument,python
来源: https://codeday.me/bug/20191008/1870963.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有