明星*在函数声明中的含义是什么?

时间:2015-09-22 21:23:58

标签: python syntax parameter-passing

*在以下代码(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 个答案:

答案 0 :(得分:11)

当没有变量参数时,它将位置参数与keyword-only arguments分开。这是一个仅限Python-3的功能。