公告:

Python 太糟糕了?开发者总结了 8 大原因

作者:我爱技术网 / 时间:1年前 (2018/12/21) / 分类:数据库 / 阅读:1747 / 评论:0

有开发者发文表达了他觉得 Python 不行的 8 大原因。

Python 太糟糕了?开发者总结了 8 大原因  百度资讯 图文教程 第1张

作者对每一项“缺点”都进行了剖析,全文洋洋洒洒,归纳起来 8 个原因分别是:

1、版别不兼容

Python 3 与 Python 2 不完全兼容。作者以 Perl 言语和发明了世界上前期个人电脑的 Commodore 为例,剖析了缺少向后兼容性和别离版别是如何导致失败的。

2、安装问题

运转 apt、yum 与 rpm 等工具能够获取并安装大多数软件包的最新代码,可是在运用 apt-get install python 或许 pip install python 安装 Python 的时分你不知道实践被安装的是哪个版别,而这可能与你所需求的代码不兼容。安装时需求指定 Python 版别。

3、缩进规矩

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

4、代码导入方法

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

此外,Python 的导入机制还答应用户重命名导入的代码,作者以为重命名模块十分适合小脚本,可是关于长程序来说真的很糟糕,由于它会影响代码的可读性和长时刻支撑。

而更糟糕的当地在于,关于大多数言语来说,导入代码就只是导入代码,假如存在带有构造函数的全局目标,那么一些言语会履行代码,但这一般被以为是一种欠好的做法。而许多 Python 模块在导入期间就运转初始化函数,这导致你不清楚什么正在运转,不知道它在做什么,需求花许多时刻来追踪。

5、命名法

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

作者将 Python 描绘为“具有可怕且不共同的命名约好的库的集合”。

6、怪癖

每种言语或多或少都有自己的怪癖,可是 Python 比其它言语都多。以字符串的操作为例,在 Python 中,单引号和双引号之间没有区别。可是,假如想要字符串跨行,则需求运用三引号 """string""" 或 ```string```;假如想运用二进制文件,那么需求运用 b'binary' 或 r'raw';有时需求运用 str(string) 将字符串转换为字符串,或运用 string.encode('utf-8') 将其转换为 utf8。

7、按目标引证传递变量

大多数编程言语都按值传递函数参数,可是 Python 默许运用 pass-by-object-reference 参数履行函数,这意味着更改源变量可能会使引证值改动。这是程序、函数和和面向目标编程言语之间的严重差异之一,假如每个变量都是经过目标引证传递的,并且对变量的任何更改都会在任何当地更改引证,那么能够直接运用全局变量来处理一切变量。可是全局变量的弊端是众所周知的。

8、本地名称

假如在运用名为“libscreencapture.so”的 C 库测验截屏程序,能够调用自己的程序“screencapture.c”并编译成“screencapture.exe”。

可是在 Python 中这么做是不可的。Python 假定你首先要导入的是本地代码,那么假如你有一个名为“screencapture.py”的程序运用“import screencapture”,它将导入自己而不是体系库。

作者最终还表明,一般他会辩证地去谈论一个东西,他觉得 Python 的确有一些不错的库,比方 BeautifulSoup、NumPy 和 TensorFlow,可是他真的无法列出关于 Python 其它好的方面,由于他真的以为 Python 很糟糕。


推荐阅读:

使用CDN图像处理实现图像水印和图片弹出兼容性

支付宝移动特权领最高10G流量和最高588元红包

微信收藏活动复活 新老用户百分百领取1元

  • QQ群
  • 微信公众号