Почему выражения могут передаваться через несколько строк в вызовах функций, но не в присваиваниях?

1

Я только что понял, что можно растянуть оператор на несколько строк, когда он передается в качестве параметра в функцию:

print(1 == 
  1)

Однако, делая то же самое во время назначения переменной, возникает SyntaxError:

x = 1 ==
  1

Почему первый пример работает, а второй дает SyntaxError?

Теги:
parameter-passing
expression
indentation
variable-assignment

2 ответа

5

Python распознает открытые скобки, скобки и скобки как указание на то, что инструкция не завершена. Таким образом, вызову функции "естественно" разрешено занимать строки.

Это соглашение синтаксического анализатора не применяется к выражениям, в которых нет необходимой сбалансированной заключающей пунктуации.

Обратите внимание, что строки также не могут пересекать границы линий.

  • 1
    Демонстрация x = (1 == ... newline ... 1) качестве рабочего синтаксиса может сделать это еще более понятным.
0

Еще один способ сделать это с помощью символа продолжения (\), как в...

x = 1 == \
  1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню