2024-05-14 13:29:43 发布
网友
我知道在Python中分号是不必要的,但是它们可以用来将多个语句塞进一行,例如
>>> x = 42; y = 54
我一直以为是分号。所以我有点惊讶地发现(h/tNed Batchelder on Twitter)双分号是语法错误:
我假设最后一个程序相当于x = 42\n\n。我本以为分号之间的语句被当作一个空行,一个no-op。显然不是。在
x = 42\n\n
为什么这是一个错误?
从Python语法中,我们可以看到;没有定义为\n。解析器期望在;后面有另一个语句,除非它后面有一个换行符:
;
\n
Semicolon w/ statement Maybe a semicolon Newline \/ \/ \/ \/ simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
这就是x=42;;不起作用的原因;因为两个分号之间没有语句,因为“nothing”不是语句。如果它们之间有任何完整的语句,比如pass,甚至只是一个0,代码就可以工作了。在
x=42;;
pass
0
空语句仍然需要pass,即使有分号。在
>>> x = 42;pass; >>> x 42
从Python语法中,我们可以看到
;
没有定义为\n
。解析器期望在;
后面有另一个语句,除非它后面有一个换行符:这就是
^{pr2}$x=42;;
不起作用的原因;因为两个分号之间没有语句,因为“nothing”不是语句。如果它们之间有任何完整的语句,比如pass
,甚至只是一个0
,代码就可以工作了。在空语句仍然需要
pass
,即使有分号。在相关问题 更多 >
编程相关推荐