Потому что, как предполагает альтернативное имя (именованные выражения), в левой части оператора моржа должно быть NAME
. Поэтому, по определению, такие выражения, как отмечено в вашем вопросе, а также, например, вызовы функций не могут быть назначены в этой форме.
В документации также указано:
Одиночные цели назначения, отличные от единственного NAME
, поддерживаются , а не
. Для дальнейшего продвижения этого аргумента можно заметить, что cPython явно проверяет если выражение Name_kind
:
if (target->kind != Name_kind) {
const char *expr_name = get_expr_name(target);
if (expr_name != NULL) {
ast_error(c, n, "cannot use assignment expressions with %s", expr_name);
}
return NULL;
}