栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用可以接受不是标识符的kwargs关键字参数的函数安全吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用可以接受不是标识符的kwargs关键字参数的函数安全吗?

首先:

**{...}
具有非标识符名称的调用约定仅在被调用函数具有
**kw
接收它们的参数的情况下才有效,因为它也无法定义不是有效标识符的显式关键字参数。

我要说的是,

keyword_arguments
语法仅适用于 源代码
的解析器,不能被视为对
**expression
结果内容的功能限制。下面的功能描述没有明确限制字典的键,功能定义文档也没有。

相反,因为语法允许的

expression
,功能规范规定,应该可以解决的映射 ,其中被视为额外的关键字参数的内容
,很显然(对我)有上的按键没有任何限制 可言
,超越适用于Python词典的普通键(键必须是不可变的)。您可以为所有Python护理传递元组或数字键。功能规格说明内容的处理方式,而不是内容必须符合特定格式。

因此,在我看来,功能规范必须 明确
限制

**expression
字典中的键以禁止您执行操作,因为语法肯定不会。进行更改将是一个巨大的向后不兼容的更改,并且不可能再添加。

请注意,即使规范未提及字典键的任何限制,CPython也会:

>>> def f(*args, **kw): print args, kw... >>> f(**{1: 2})Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: f() keywords must be strings

这是python解释器在调用代码对象(用户定义的函数)时做出的限制。在引发上述异常的部分之后的源代码中直接说明了原因:

通过将关键字限制为字符串,可以实现速度优化。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号