python 性能差的原因_Python 太糟糕了?开发者总结了 8 大原因

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

作者对每一项“缺点”都进行了剖析,全文洋洋洒洒,归纳起来 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 很糟糕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
datahub 是阿里云提供的数据接入和流式处理的服务,支持数据的实时写入、查询和消费。使用 datahub 可以方便地实现大数据的实时计算、数据分析和数据挖掘等应用场景。下面是使用 Python 消费 datahub 的简单指南。 1. 安装 datahub-python-sdk datahub-python-sdk 是阿里云官方提供的 Python SDK,可以方便地使用 Python 操作 datahub。可以使用 pip 安装: ```python pip install datahub-python-sdk ``` 2. 创建 Datahub 客户端 可以使用如下代码创建一个 datahub 客户端: ```python from datahub import DataHub client = DataHub(access_id='<your_access_id>', access_key='<your_access_key>', endpoint='<your_endpoint>', project='<your_project>', topic='<your_topic>') ``` 其中,access_id 和 access_key 是阿里云账号的 AccessKeyId 和 AccessKeySecret,endpoint 是 datahub 服务的地址,project 和 topic 分别是 datahub 中的项目和主题名称。 3. 消费数据 可以使用如下代码消费 datahub 中的数据: ```python result = client.get_tuple_records('<your_shard_id>', '<your_cursor>', limit=1000) for record in result.records: print(record) ``` 其中,shard_id 是 datahub 中的分片编号,cursor 是上一次消费数据时返回的游标,limit 是每次消费的数据条数。可以将消费到的数据进行进一步处理、分析或者存储。 以上就是使用 Python 消费 datahub 的简单指南,希望对使用 datahub 的开发者有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值