2016-12-10 4 views
0

Möglicherweise weiß, dass ich die folgenden Verwendungen von **Python & Django: Was bedeutet ** bedeutet

Strom

x ** y # x power y equivalent to pow(x,y) 

Passing unbestimmte Anzahl von args

def sample(x, **other): 
    print(x, other.keys) 
sample(x=2,y=3,z=4) 

Aber ich verstehe nicht, wenn es wird wie folgt verwendet (in Serializers)

def create(self, validated_data): 
    return Comment(**validated_data) 

Kann mir jemand einen Hinweis geben, was dort passiert

Antwort

1

Es ist das Gegenteil von Ihrem zweiten Beispiel. Wenn in der Definition einer Funktion der Operator ** alle benannten Argumente sammelt und ein Wörterbuch erstellt. Wenn Sie eine Funktion aufrufen, dauert es ein Wörterbuch und bricht es in benannte Argumente

Also, wenn Sie haben

values = {'x': 1, 'y': 2} 
f(**values) 

es das Äquivalent von

ist
f(x=1, y=2)