Что означает звезда * в объявлении функции?

что значит * среднее значение в следующем коде (найдено в 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 может быть назначен только по имени...

Ну, нет! Потому что это не согласуется с в документация:

в вызове функции аргументы ключевых слов должны следовать позиционным аргументы.

Итак, что делает звезда после и до других именованных аргументов? И как это используется? Или почему он там, если он не используется?

1 ответов


Он отделяет позиционные аргументы от ключевое слово-только аргументы когда нет аргументов переменной. Это питон-3-единственная особенность.