2016-12-10 3 views
0

Возможно, я знаю следующие виды использования **Python и Django: Что ** означают

Мощность

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

Попутный неограниченное количество арг

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

Но я не понимаю, когда его использовали следующим образом (в Serializers)

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

Может кто-нибудь дать мне намек на то, что там происходит

ответ

1

Это противоположность вашему второму примеру. Когда в определении функции оператор ** собирает все именованные аргументы и делает словарь. При вызове функции, он принимает словарь и разбивает его на именованные аргументы

Итак, если у вас есть

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

это эквивалент

f(x=1, y=2) 
Смежные вопросы