Что означает один * без идентификатора в функциях Python3?

Что означает один * без идентификатора в аргументах функции Python? Вот пример, который работает с Python3.2:

class Shape:
    def __init__(self, *, shapename, **kwds):
        self.shapename = shapename
        super().__init__(**kwds)

Для меня звезда после себя странная.

Я нашел его здесь (из строки 46): http://code.activestate.com/recipes/577720-how-to-use-super-effectively/

Ответы

Ответ 1

Единственный * указывает, что все следующие аргументы являются аргументами только для ключевого слова, то есть они могут быть предоставлены только с использованием их имени, а не как позиционный аргумент.

Подробнее см. PEP 3102.