是否有一个不能用关键字参数调用的内置函数的完整列表?

2024-05-20 16:46:03 发布

您现在位置:Python中文网/ 问答频道 /正文

答案中提到的人a1a2

Due to the way the Python C-level APIs developed, a lot of built-in functions and methods don't actually have names for their arguments.

我觉得这很烦人,因为我看医生都不知道。例如,eval

eval(expression, globals=None, locals=None)

然后我写了这行代码

print(eval('a+b', globals={'a':1, 'b':2}))

得到了TypeError: eval() takes no keyword arguments。那么这类函数是否有完整的列表?如何知道函数是否允许有关键字参数?在


Tags: theto函数答案nonea2a1eval
1条回答
网友
1楼 · 发布于 2024-05-20 16:46:03

在Python3.5中,您可以检查内置函数的__text_signature__

>>> eval.__text_signature__
'($module, source, globals=None, locals=None, /)'

或者

^{pr2}$

x不能用作关键字参数)

/表示后面的参数可以用作关键字参数。C、 f

>>> compile.__text_signature__
'($module, /, source, filename, mode, flags=0,\n        dont_inherit=False, optimize=-1)'
>>> compile(source='foo', filename='bar', mode='exec')
<code object <module> at 0x7f41c58f0030, file "bar", line 1>

当然,即使在3.5版本中也有bug:

>>> sorted.__text_signature__
'($module, iterable, key=None, reverse=False)'

虽然根据issue 26729 in the Python bug tracker,但是iterable后面应该有/,因为iterable不能用作关键字参数。在


不幸的是,Python文档本身还没有提供这些信息。在

相关问题 更多 >