繁体   English   中英

内置列表function说明中的“/”是什么

[英]What is the " / " in the built-in list function descriptions

内置列表 function 描述的末尾是“/”。 它是什么?

>>> l=[]
>>> help(l.insert)
Help on built-in function insert:

insert(index, object, /) method of builtins.list instance
    Insert object before index.

>>> help(l.index)
Help on built-in function index:

index(value, start=0, stop=9223372036854775807, /) method of builtins.list instance
    Return first index of value.

来自Python 有关 help() 的文档

请注意,如果斜线(/)出现在 function 的参数列表中,则在调用 help() 时,这意味着斜线之前的参数是仅位置参数。

以及来自positional-only parameters 的 FAQ 条目

一个function的参数列表中的斜杠(/)是什么意思?

function 的参数列表中的斜杠表示它之前的参数仅是位置参数。 仅位置参数是没有外部可用名称的参数。 在调用接受仅位置参数的 function 时,arguments 将映射到仅基于其 position 的参数。例如,divmod() 是接受仅位置参数的 function。 它的文档如下所示:

>>> help(divmod)
Help on built-in function divmod in module builtins:
>
> divmod(x, y, /)
>    Return the tuple (x//y, x%y).  Invariant: div*y + mod == x.

参数列表末尾的斜杠表示两个参数都是位置参数。 因此,使用关键字 arguments 调用 divmod() 会导致错误:

>>> divmod(x=3, y=4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: divmod() takes no keyword arguments

Python中有3种参数:

  1. Positional-only,只能通过positional arguments设置
  2. “常规”,可以通过位置 arguments 或关键字 arguments 设置
  3. Keyword-only,只能通过关键字arguments设置。

在定义 function 时,使用/分隔左侧的仅位置参数(至少一个)和右侧的 rest。 如果参数列表中没有/ ,则没有位置参数。

语法起源于参数 clinic,它用于为 CPython 实现定义函数。 在 PEP-570 中将其添加到 Python 本身的语法之前,它的使用出现在此类函数的帮助中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM