Это, по-видимому, является ограничением при компиляции источника, поэтому, вероятно, существует только для передаваемых аргументов напрямую, а не в * args или ** kwargs.
Соответствующий код можно найти в ast.c :
if (nargs + nkeywords + ngens > 255) {
ast_error(n, "more than 255 arguments");
return NULL;
}
Но учтите, что это находится в ast_for_call и поэтому применяется только к вызывающей стороне. т.е. f(a,b,c,d,e...)
, а не определение, хотя оно будет учитывать как позиционные (a,b,c,d)
, так и keyword (a=1, b=2, c=3)
параметры стиля. Фактические параметры *args
и **kwargs
выглядят так, что они должны считать только один аргумент для этих целей на вызывающей стороне.