函数声明中单独的星 * 是啥意思? [复制]

Posted

技术标签:

【中文标题】函数声明中单独的星 * 是啥意思? [复制]【英文标题】:What does a star * alone mean in a function declaration? [duplicate]函数声明中单独的星 * 是什么意思? [复制] 【发布时间】:2015-12-20 00:58:38 【问题描述】:

以下代码中的* 是什么意思(可在pprint 库中找到)?

def pformat(object, indent=1, width=80, depth=None, *, compact=False):
    """Format a Python object into a pretty-printed representation."""
    return PrettyPrinter(indent=indent, width=width, depth=depth,
                         compact=compact).pformat(object)

如果是*args,那么它将是任意数量的位置参数。参数值将在名为args 的元组中。前4个参数可以按名称或位置分配,参数compact只能按名称分配...

好吧,不!因为和the documentation不符:

在函数调用中,关键字参数必须跟在位置之后 论据。

那么,星号在其他命名参数之后和之前做了什么?以及它是如何使用的?或者不使用为什么会存在?

【问题讨论】:

【参考方案1】:

当没有可变参数时,它将位置参数与keyword-only arguments 分开。这是 Python-3 独有的功能。

【讨论】:

谢谢。在问题中我提到了 Python 2 文档页面,但引用的短语也在 3.

以上是关于函数声明中单独的星 * 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

对象/函数/类声明周围的括号是啥意思? [复制]

delphi中函数的声明和调用是啥意思?

声明函数时,“->”在swift中是啥意思?

函数签名中变量名前的 * 和 ** 是啥意思? [复制]

__global__ 在 c 中函数声明的上下文中是啥意思?

Python3 函数中没有标识符的单个 * 是啥意思? [复制]