Dim*_*iev 2 python sum keyword-argument positional-parameter
这看起来非常基本,但由于它与python语言本身有关,我觉得这里迷路了.根据Python 3.6文档:
>>>help(sum)
...
sum(iterable, start=0, /)
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
...
Run Code Online (Sandbox Code Playgroud)
当我打电话:sum([0,1,2], start=1),我得到:
TypeError: sum() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
的/原型是惯例,这意味着所有的参数之前,它仅是位置 ; 它们不能通过关键字传递.Python中定义的函数不能这样做(至少,不是只接受参数*args和手动解包内容,尽管链接的PEP建议也允许Python级函数的语法),但是因为sum是内置的实现的C它可以做到这一点(它实际上在内部进行手动解压缩,但可以宣传更有用的原型),并且更容易定义默认值.不接受关键字参数允许它比允许关键字参数的可能性更有效地运行.
点是,参数没有真正命名start,所以你不能通过名字传递它; 你必须在位置上传递它,例如:
sum([0,1,2], 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |