Python в основном реализует прагматически окрашенный вариант разделения команд и запросов : мутаторы возвращают None
(с прагматически вызванными исключениями, такими как pop
;-), поэтому их невозможно спутать с аксессорами (и в том же духе, присваивание не является выражением, разделение оператора-выражения существует и т. д.).
Это не значит, что не так много способов объединить вещи, когда вы действительно хотите, например, dict(a, **award_dict)
создает новый диктант, очень похожий на тот, который вы, кажется, желаете, чтобы .update
вернулся - так почему не использовать это, если вы действительно чувствуете, что это важно?
Редактировать : кстати, в вашем конкретном случае нет необходимости создавать a
по пути, либо:
dict(name=name, description=desc % count, points=points, parent_award=parent,
**award_dict)
создает один диктовку с точно такой же семантикой, что и ваша a.update(award_dict)
(включая, в случае конфликтов, тот факт, что записи в award_dict
переопределяют те, которые вы даете явно; чтобы получить другую семантику, т. Е. иметь явные записи, "выигравшие" в таких конфликтах, передать award_dict
в качестве единственного позиционного аргумента, перед ключевыми словами и лишенного формы **
- dict(award_dict, name=name
и т. д. и т.д.).