2012-07-06 6 views
15

Co oznacza pojedyncza * bez identyfikatora w argumentach funkcji Pythona? Oto przykład, który współpracuje z Python3.2:Co oznacza pojedynczy * bez identyfikatora w funkcjach Python3?

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

Dla mnie gwiazdą po jaźni jest dziwne.

znalazłem go tutaj (z wiersza 46): http://code.activestate.com/recipes/577720-how-to-use-super-effectively/

+1

Dodatkowe punkty dla tego, który wskazuje na PEP;) (pamiętam przeczytanie fragmentu opisującego to PEP, ale nie pamiętam gdzie ani co to było, **/ja wraca do google **) – KurzedMetal

Odpowiedz

13

Samotny * wskazuje, że wszystkie następujące argumenty są słowa kluczowego tylko argumenty, to znaczy mogą być zrealizowane tylko przy użyciu ich nazwy, a nie jako pozycyjny argument.

Aby uzyskać więcej informacji, patrz PEP 3102.

+1

Innymi słowy: 'shapename' musi być jawnie dodany podczas tworzenia nowego obiektu' Shape', np. 'Shape (shapename = 'Circle')' – KurzedMetal