Qt编程:用Python还是C++更高效?

48 投票
5 回答
19474 浏览
提问于 2025-04-16 00:33

我想深入学习Qt,但还没有用它做过大项目。目前我在用Python,但我在想——哪种语言在程序员的工作效率上更好呢?

在大多数语言比较中,Python显然是更好的选择,因为你不用去操心内存管理这些麻烦事。

不过,关于Qt我就不太确定了。Qt为C++增加了很多功能,所以我发现大多数情况下,一行Python代码和一行C++代码差不多(当然,像类定义和结构体这些额外的东西不算在内)。只要你使用Qt的类,它几乎会为你处理所有的内存管理,而且还提供了类似于Python中好用的容器。

我一直更喜欢静态类型的语言,但因为各种原因也开始使用Python。如果C++的程序员效率差不多的话,我可能会考虑回到C++,因为它有其他的好处——代码更高效,用户需要安装的依赖更少。

大家怎么看?

5 个回答

11

绝对是Python。

是的,有人会说Python更高效,但他们可能没有解释原因。有些回答提到你不需要重新编译。我来给你详细讲讲。

  1. Python是在C++之上多了一层抽象,这样你可以用更少的代码来思考和表达你的设计。虽然你的程序可能运行得没有那么快,但你可以更快地用代码表达你想要的东西。

  2. 最常见的情况是,当你启动应用程序,加载一些文件,设置环境,然后打开一个对话框。这时你会发现某个按钮没有反应,或者它应该在的位置不见了。大多数人会在这个时候关闭应用程序,调整一下这里的设置,那里绑定一下信号……然后再重新启动应用程序,加载文件,设置环境……而用Python,你只需要写一段代码,然后重新打开那个对话框,不用重新启动整个应用程序。我不知道你怎么样,但我大部分时间都是在用Qt做这种事情。

  3. Python给你提供了一些C++没有的功能:自省。你可以在程序运行时探索它,获取关于它的组件的信息。Qt部分提供了这个功能。你有一个MOC层,可以将元属性和元信息附加到Qt对象上。而Python程序的所有部分都可以进行自省。很多人在调试Python代码或者试图理解它是如何工作的时,都对这个功能爱不释手,这也是有原因的。

34

如果让我选择的话,我会推荐使用Python,尽管我自己是个C++的爱好者。用Python写代码,你就不用担心MOC、可移植性、构建时间等等这些麻烦的事。比如说,比较一下在C++中实现QT槽和在PyQT或PySide中实现的工作量,我发现用这种方式处理小部件要轻松得多(效率更高)。而且在需要更高性能的情况下,你仍然可以从Python调用C++代码。

如果你打算使用两者结合,建议你扩展Python,而不是把Python嵌入到其他地方。通常来说,Python更适合嵌入C/C++代码,而不是被嵌入到C/C++系统中。这样做也更合理,因为大多数应用程序的代码都是一些普通的、不太需要性能的部分,而不是性能关键的代码。因此,把你的应用主要写成Python程序,然后再附加一些C/C++功能,这样的系统设计会更合适。

31

我的看法(我尝试过C++和Python,特别是在Qt的情况下):在“程序员的生产力”和“心态平和”这两个方面,Python总是更胜一筹。PyQt很好地代表了Qt,所以根本不需要再讨论“用Python做Qt”还是“用C++做Qt”,一般来说,Python的生产力更高,当然如果你需要速度或者Python没有的某些功能,那就另当别论了。

最好的方法是先用C++写一个简单的项目,然后再用Python写同样的项目,进行比较。不过,这样可能会偏向于Python,因为你在用Python写完项目后,可能会觉得它更简单。所以,最好再试一个项目,先用Python做,再用C++做。

撰写回答