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

Python函数中最大参数个数是多少?

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

Python函数中最大参数个数是多少?

在Python
3.7和更高版本中,没有限制。这是在问题#27213和问题#12844中完成的工作的结果;#27213重新设计了

CALL_FUNCTION*
操作码系列,以提高性能和简化性(3.6的一部分),释放了操作码参数以仅对单个参数计数进行编码,并且#12844删除了编译时检查,该检查防止了带有更多参数的代码无法编译。

因此,从3.7开始,使用

EXTENDED_ARG()
oppre,现在可以使用显式参数传递多少个参数,保存多少可以装入堆栈(现在受内存 限制)就完全没有限制

>>> import sys>>> sys.version_infosys.version_info(major=3, minor=7, micro=0, releaselevel='alpha', serial=2)>>> def f(*args, **kwargs): pass...>>> exec("f({})".format(', '.join(map(str, range(256)))))>>> exec("f({})".format(', '.join(map(str, range(2 ** 16)))))

请注意,列表,元组和字典仅限于

sys.maxsize
元素,因此,如果被调用函数使用
*args
和/或包含
**kwargs
所有参数,则这些
元素将 受到限制。

对于

*args
and
**kwargs
调用语法(扩展参数),除
sys.maxint
Python标准类型的大小限制相同外,没有其他限制。

在Python 3.7之前的版本中,CPython在调用中限制为255个显式传递的参数:

>>> def f(*args, **kwargs): pass...>>> exec("f({})".format(', '.join(map(str, range(256)))))Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "<string>", line 1SyntaxError: more than 255 arguments

之所以存在此限制,是因为直到Python
3.5,

CALL_FUNCTION
操作码都将操作码参数重载以对堆栈上的位置参数和关键字参数的数量进行编码,每个参数都编码为一个字节。



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

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

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