我知道Python中不需要分号,但它们可用于将多个语句塞入一行,例如。
>>> x = 42; y = 54
我一直以为分号相当于换行符。所以我有点惊讶(h / t Ned Batchelder on Twitter)双分号是一个SyntaxError:
>>> x = 42
>>> x = 42;
>>> x = 42;;
File "<stdin>", line 1
x = 42;;
^
SyntaxError: invalid syntax
我认为最后一个程序相当于x = 42\n\n
。我以为分号之间的陈述被视为一个空行,一个无操作。显然不是。
为什么这是一个错误?
答案 0 :(得分:104)
从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
答案 1 :(得分:23)
空语句仍然需要Rational Rational::operator-(Rational num)
{
Rational tmp[3];
tmp[0] = multFraction(num);
tmp[1] = num.multFraction(*this);
tmp[2].mone = tmp[0].mone - tmp[1].mone;
tmp[2].mechane = tmp[0].mechane;
if (checNumber(tmp[2]))
{
string printOne = tmp[2].mone;
return printOne;
}
return reducingNumber(tmp[2]);
}
,即使你有分号。
pass