PEP8 与 C++

我是一个学生党,主要是学习 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'

blush

python·c++
231 views
Comments
登录后评论
Sign In
·

Python 和这几种语言在语法上的差距比较大。

Python 的初衷是作为一个动态的脚本语言,语句末尾不用分号属于比较常见的情况。对于括号,Python 的语法成分不要求这个东西。

if <condition>:
    ...

带上括号也能成立的原因是 (True) 这个括号表达式的值是 True 本身,所以不影响程序的运行。

C++ 的 for 语句格式是这样的:

for (<init-statement> <condition>; <expression>)
    <statement>

可以看出括号是必要的语法成分。

这里 <init-statement> 后面没有分号的原因是,;<init-statement> 的一部分。

这与语言设计者的理念有关,Python 的设计者认为这几种语句后面使用空格就能够区分各个语法成分,去掉多余的括号会更加简洁。

而 C++、Java、C# 等语言的语法受 C 语言的影响比较深,从 C 继承了一部分语法,就成了现在这个样子,它们也被称为类 C 语言

有趣的是,C 的发明者设计新的语言 golang 时,也去掉了不少的括号。

·

Python和JavaScript或者说TypeScript的语法比较相似,所以说总是被称作脚本语言、胶水语言。好处是减少了很多对于格式的限制,让语法更加简洁,这很利于非编程专业的人使用,这也是Python很受数学领域或是人工智能领域欢迎的原因。

但是如果是计算机专业的同学,还是建议先从C语言或者C++入手,这样会更好地理解编译性语言和计算机底层架构的关系,然后再选择Java或者Python等解释性语言。就不会像你描述的有那么多冲突了,各种语言学习也会更加流畅。

·

c++永远的难学!!!

但是python真的香。

·

这我觉得是你先学Python的原因,我先学C,就感觉Python那个语法难以接受,甚至在使用if的时候是这样的if (True):,和C/C++保持一致

·

PEP全称是Python Enhancement Proposal,直译为中文是Python增强提案,可以理解为一份Python编码规范。

可以看到,PEP8Python语言才有的,所以和 C++ 语法冲突这个问题本身是不成立的。