Ответ 1
Из грамматики Python мы видим, что ;
не определяется как \n
. Парсер ожидает другого оператора после ;
, за исключением того, что после него появляется новая строка:
Semicolon w/ statement Maybe a semicolon Newline
\/ \/ \/ \/
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
Вот почему x=42;;
не работает; потому что между двумя точками с запятой нет утверждения, поскольку "ничего" не является выражением. Если между ними существует полная инструкция, например pass
или даже просто 0
, код будет работать.
x = 42;0; # Fine
x = 42;pass; # Fine
x = 42;; # Syntax error
if x == 42:; print("Yes") # Syntax error - "if x == 42:" isn't a complete statement