оператор if не выполняется при использовании после разделителя точки с запятой - PullRequest
0 голосов
/ 01 апреля 2019

Я не понимаю, почему у меня возникает ошибка с Python, когда я использую однострочный оператор if после точки с запятой (используется как разделитель операторов).

Это нормально:

if True: print("it works")
#### it works

Но это дает синтаксическую ошибку:

a=1; if True: print("it should work?")
#### SyntaxError: invalid syntax

Я использую Python3 с Spyder.

Спасибо за любые объяснения!

1 Ответ

1 голос
/ 01 апреля 2019

Точки с запятой можно использовать только для присоединения к «маленьким операторам», которые не включают if операторов. От https://docs.python.org/3/reference/grammar.html:

stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
             import_stmt | global_stmt | nonlocal_stmt | assert_stmt)

[...]
compound_stmt: if_stmt | [...]
...