我是一个学生党,主要是学习 Python。后来开始学Java、C# 和 C++,然后遇到了一个问题:
因为我写 Python 代码的时候都遵守 PEP8 规则,然后就和 C++ 语法冲突了亿些
1、分号
在 Python 中,每一行结束不需要写分号,如:
def main():
print("Hello World")
if __name__ == '__main__':
main()
而 C++ 则必须写
#include <iostream>
using namespace std;
int main() {
cout << "Hello World" << endl;
return 0;
}
如果不写还要报错:
error: expected expression
2、括号
在 Python,需要删除不必要的括号
def main():
while (true): # 删除不必要的括号
...
if (True): # 删除不必要的括号
...
if __name__ == '__main__':
main()
而 C++ 就不一样了
如果你这么写:
#include <iostream>
using namespace std;
int main() {
if true {
}
return 0;
}
直接报错
error: expected '(' after 'if'
Python 和这几种语言在语法上的差距比较大。
Python 的初衷是作为一个动态的脚本语言,语句末尾不用分号属于比较常见的情况。对于括号,Python 的语法成分不要求这个东西。
带上括号也能成立的原因是
(True)
这个括号表达式的值是True
本身,所以不影响程序的运行。C++ 的
for
语句格式是这样的:可以看出括号是必要的语法成分。
这与语言设计者的理念有关,Python 的设计者认为这几种语句后面使用空格就能够区分各个语法成分,去掉多余的括号会更加简洁。
而 C++、Java、C# 等语言的语法受 C 语言的影响比较深,从 C 继承了一部分语法,就成了现在这个样子,它们也被称为类 C 语言。