众所周知,Python函数最多可以有256个参数。我很好奇的是,此限制是否以以下方式展开时适用于*args
和**kwargs
:
items = [1,2,3,4,5,6]
def do_something(*items):
pass
我问是因为,假设情况下,大于256个项目的列表可能会作为一组*args
或**kwargs
展开。
WFM
在Python 3.6及更低版本中,此限制是由于编译后的字节码对待使用位置参数和/或关键字参数调用函数的原因。
在Python 3.7之前的版本中,CPython在调用中限制了255个显式传递的参数:
这似乎是对源代码的限制,因此可能仅对直接传递的参数存在,而不在* args或** kwargs中存在。
对于** wargs,如果我还记得的话,这是一本字典。因此,它几乎没有限制。
我尝试了4000种商品的清单,并且有效。因此,我猜想它也适用于更大的值。