Python的限制是什么?

12 投票
11 回答
10998 浏览
提问于 2025-04-15 16:21

我花了几天时间研究C++和Python,发现Python简单得多,学起来也容易。

所以我在想,花时间学Python真的值得吗?还是应该把时间花在学C++上呢?

C++能做的事情,Python做不到的有哪些呢?

11 个回答

8

你为什么不问反过来的问题呢?和C++不一样,Python可以通过它的import命令给你带来一些“反重力”的效果,还能召唤“灵魂”。而C++的“对应命令”#include,只能让你获取一些无聊的输入输出和数学库。

说真的,C++能让你做更多底层的事情,比如内核编程,还能让你写出运行得更快的程序(大约快20倍)。你可以用它来创建真正的线程,利用多核处理器的优势,而Python(由于它的设计)一般只能在单核上运行它的模拟线程。

在我看来,你应该学习这两种语言;Python适合做网页开发和快速简单的脚本,C++则适合写系统代码、桌面应用程序,还能让你更好地理解计算机的底层。如果你刚开始学习,建议先学Python,因为它更容易上手。

关于速度差异的具体测量可以在这里找到。

编辑:看起来我关于多线程的信息有点过时了;请参见John Paulett的评论。

32

学习Python的理由如下:

其实,只有少数问题是因为算法的速度限制了我们解决它们的能力。而大多数问题的解决速度更多是受开发者自身的速度影响。

41

一些关于Python的限制:

- Python比较慢。虽然有很多方法可以提高它的速度(可以看看其他回答),但最基本的cPython比C/C++慢100倍。

不过这个问题正在逐渐改善。使用Numpy、Pypy和asyncio后,大部分性能问题都得到了解决,只有一些特定的情况在Python中仍然是瓶颈。

- Python对任何事情都很开放。保护、混淆或限制Python代码是非常困难的。

- Python没有炒作。和Ruby不同,Python周围没有什么“酷炫的潮流”,而且找到一个有经验的Python程序员比找到一个Java或PHP的高手要难得多。

- 用过Python后,很多语言用起来都觉得很痛苦。你可能觉得这很好,但相信我,并不总是如此。当你在完成一个Python项目后要转到JavaScript时,你会感到非常痛苦,至少要哭三天。真的很难入门。

- 找到合适的网络托管比流行的解决方案要难,比如PHP。

- 作为一种动态语言,你没有像Java和Eclipse或C#和VS那样方便的重构工具。

- 由于同样的原因,你不能依赖类型检查作为安全网。这就是为什么Python程序员往往更遵循最佳实践,并更频繁地编写单元测试。

- 我似乎找不到一个代码补全做得好的IDE。PyDev、Gedit、Komodo、SPE等都没有做到最好。

不过,随着Python 3的类型提示和像PyCharm或Sublime Text+Anaconda这样的工具,情况已经有了很大改善。

- 最好的文档仍然只有英文。有些人对此不太适应。

- 你需要适应Python的语法。不仅用空格和换行代替了大括号,还要忘掉长的lambda表达式、--i和三元运算符。

对我来说,这些都不是不学习这个工具的理由,因为它能让你更高效地工作,同时也更有乐趣。也许这只是我个人的看法 :-)

老实说,考虑到:

  • C++学习起来要困难得多;
  • 你可以用Python做几乎任何事情;
  • 在项目中用Python能更快得到结果。

除非你有涉及C++的专业问题,否则最好先学Python,这样更有动力。你仍然可以在以后学习C++,它在系统编程、嵌入式设备等方面是个有用的语言。

不要试图同时学习两者,多任务处理通常不会有好结果。

撰写回答