Я хотел бы знать, есть ли причина, по которой следующий код вызывает SyntaxError
:
>>> if 1,2:
File "<stdin>", line 1
if 1,2:
^
SyntaxError: invalid syntax
>>>
Не следует ли интерпретировать 1,2
Python как кортеж из двух элементов (который затем оценивается до True
при проверке с помощью оператора if)? Следующая демонстрация предполагает, что она должна:
>>> 1,2
(1, 2)
>>> tup = 1,2
>>> bool(tup)
True
>>>
Кроме того, если вы посмотрите на документацию для инструкции if-python, вы прочитаете следующее:
if_stmt ::= "if" expression ":" suite ( "elif" expression ":" suite )* ["else" ":" suite]
Как вы можете видеть, в нем четко сказано, что синтаксис для оператора if - это ключевое слово if
, за которым следует выражение. Если я не ошибаюсь, 1,2
действительно является выражением.
Наконец, можно утверждать, что этот синтаксис бесполезен, поэтому зачем его использовать? Это верно, но Zen of Python явно говорит:
Особые случаи не являются достаточно сложными, чтобы нарушать правила.
Итак, почему SyntaxError
?