首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Python 真的很糟糕吗?(1)

Python 真的很糟糕吗?(1)

1、版本不兼容[/yiji]

Python 3 与 Python 2 不完全兼容。作者以 Perl 语言和创造了世界上早期个人电脑的 Commodore 为例,分析了缺乏向后兼容性和分离版本是如何导致失败的。

[yiji]2、安装问题[/yiji]

运行 apt、yum 与 rpm 等工具可以获取并安装大多数软件包的最新代码,但是在使用 apt-get install python 或者 pip install python 安装 Python 的时候你不知道实际被安装的是哪个版本,而这可能与你所需要的代码不兼容。安装时需要指定 Python 版本。


[yiji]3、缩进规则[/yiji]

乍一看,Python 代码似乎非常易读,但是在大型代码库中并不是这样。Pyhon 的四格缩进允许深度嵌套,但是嵌套太多层的话会导致代码在文本编辑器中换行,变得混乱。而长函数和长条件操作可能使得难以匹配语法的开始与结束。给调试带来了很大的困难。

[yiji]4、代码导入方式[/yiji]

Python 的导入方式 import 允许引入整个模块、模块的一部分或模块中的特定函数。作者认为 Python 这种导入规则使得查找可导入的列表并不直观。C 中可以直接查看 .h 头文件,但是 Python 需要使用 python -v 列出引用所在位置,之后搜索该列表中每个目录和子目录中的每个文件。

此外,Python 的导入机制还允许用户重命名导入的代码,作者认为重命名模块非常适合小脚本,但是对于长程序来说真的很糟糕,因为它会影响代码的可读性和长期支持。

而更糟糕的地方在于,对于大多数语言来说,导入代码就只是导入代码,如果存在带有构造函数的全局对象,那么一些语言会执行代码,但这通常被认为是一种不好的做法。而许多 Python 模块在导入期间就运行初始化函数,这导致你不清楚什么正在运行,不知道它在做什么,需要花很多时间来追踪。

[yiji]5、命名法[/yiji]

作者认为 Python 没有使用通用并且专业的术语描述语言本身。比如在其它所有语言中,数组都称为 arrays,但是在 Python 中,它被称为 lists;关联数组有时称为 hash(Perl),但 Python 称之为 dictionary。代码库命名方法也是这样,像 PyPy、PyPi、NumPy、SciPy、SymPy、PyGtk、Pyglet 与 PyGame 这些库,它们名称中的“Py”有时放在开头,有时又放在后边,没有统一。而类似 matplotlib、nose、Pillow 和 SQLAlchemy 的一些常见库甚至直接放弃了“Py”这种命名约定。

作者将 Python 描述为“具有可怕且不一致的命名约定的库的集合”。
返回列表