Невозможно использовать выражения присваивания с индексом - PullRequest
4 голосов
/ 29 марта 2020
if session['dp'] := current_user.avatar :
    ^ SyntaxError: cannot use assignment expressions with subscript

Почему Python запрещает использование оператора моржа?

1 Ответ

4 голосов
/ 29 марта 2020

Потому что, как предполагает альтернативное имя (именованные выражения), в левой части оператора моржа должно быть 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...