0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子工程师 来源:lq 2018-12-25 11:36 次阅读

开发者发文表达了他觉得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、本地名称

gcc-oscreencapture.exescreencapture.c-lscreencapture

假如在使用名为“libscreencapture.so”的 C 库测试截屏程序,可以调用自己的程序“screencapture.c”并编译成“screencapture.exe”。

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

作者最后还表示,通常他会辩证地去评论一个东西,他觉得 Python 确实有一些不错的库,比如 BeautifulSoup、NumPy 和 TensorFlow,但是他真的没法列出关于 Python 其它好的方面,因为他真的认为 Python 很糟糕。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传递函数
    +关注

    关注

    0

    文章

    102

    浏览量

    13928
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84449

原文标题:Python 太糟糕了?有个开发者总结了 8 个理由

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    成功的软件开发者需要掌握人际技能的3个原因

    的沟通交流造成影响。软件开发者并不一定能够理解这一点。相反,他们会抱怨客户,觉得:我们的客户一直在抱怨进度慢。根本就不知道我们其实已经非常努力,做什么事情都需要时间啊。当然
    发表于 12-12 14:39

    开发者福音!谷歌云APP引擎开始支持Python 3.7

    `Python表示很开心!谷歌云推出了第二代App Engine引擎标准runtime,这是对平台的重大升级,允许开发者使用最新版本流行语言、框架和库轻松运行web应用程序。想要尝鲜的小伙伴们,猛戳
    发表于 08-14 10:12

    OpenHarmony开源开发者成长计划-职业开发者挑战赛 开发资料汇总

    OpenHarmony开源开发者成长计划-职业开发者挑战赛 开发资料汇总OpenHarmony开发者文档设备开发文档应用
    发表于 04-24 13:44

    喜报|HarmonyOS开发者社区连获业内奖项,持续深耕开发者生态

    临近年末,各大平台陆续揭晓年度榜单,表彰具备强大影响力与做出突出贡献的优秀项目与团队,而HarmonyOS开发者社区作为技术分享,学习和展示的平台,输出高质量技术文章百余篇,连续获得业内各大
    发表于 01-19 14:32

    谷歌不止有开发者大会 另外还带来了开发者网站

    北京时间12月8日上午消息,今日谷歌开发者大会在北京召开,同时专门针对中国的谷歌开发者网站已经上线。谷歌针对中国开发者的网站域名是cn结尾,网站内含谷歌
    发表于 12-08 14:47 486次阅读

    iPhone 8发布 2大原因看空苹果

    9.13凌晨iPhone 8发布 还带了个iPhone X,带着刘海..... iPhone 8发布 大原因看空苹果. 2
    的头像 发表于 09-14 11:28 879次阅读

    Python 转向 Go语言的9大原因和3大缺点

    转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时。今年 Stream 团队的主要编程语言从 Python 转向 Go。本文解释其背后的九大原因以及如何做好这
    发表于 06-17 07:40 6803次阅读

    2018年受到众多开发者关注的7个Python类库

    几个还不太知名的库引起了Python开发者的关注。
    的头像 发表于 10-02 09:30 4751次阅读

    一位开发者讲述无法忍受Python8大原因

    Python社区已经对这个术语进行标准化,尽管它没出现在Python手册中。文档中的示例说可以使用TAB、“TAB+1空格”等等。但是社区却对4个空格有着丧心病狂的偏执!因此,除非你打算永远不向其他任何人展示你写的代码,否则每个缩进都要使用四个空格。
    的头像 发表于 12-20 09:14 3870次阅读

    Python开发者最容易忽略的10个要点

    小错误,这些错误都很容易避免,本文总结了Python开发者最容易犯的10个错误,一起来看下,不知你中枪没有。 1.滥用表达式作为函数参数默认值 P
    的头像 发表于 01-02 10:13 974次阅读

    2021 OPPO开发者大会:异构计算开发者价值

    2021 OPPO开发者大会:异构计算开发者价值 2021 OPPO开发者大会上介绍异构计算开发者价值。 责任编辑:haq
    的头像 发表于 10-27 11:10 1794次阅读
    2021 OPPO<b class='flag-5'>开发者</b>大会:异构计算<b class='flag-5'>开发者</b>价值

    2021 OPPO开发者大会:小布开发者平台生态

    2021 OPPO开发者大会:小布开发者平台生态 2021 OPPO开发者大会上介绍小布开发者平台生态。 责任编辑:haq
    的头像 发表于 10-27 14:33 2318次阅读
    2021 OPPO<b class='flag-5'>开发者</b>大会:小布<b class='flag-5'>开发者</b>平台生态

    2021 OPPO开发者大会:OPPO满足开发者需求

    2021 OPPO开发者大会:OPPO满足开发者需求 2021 OPPO开发者大会上介绍开发者需求以及OPPO可提供的资源。 责任编辑:h
    的头像 发表于 10-27 14:40 3260次阅读
    2021 OPPO<b class='flag-5'>开发者</b>大会:OPPO满足<b class='flag-5'>开发者</b>需求

    如何使用lambda表达式提升开发效率?

    Java8 的一个大亮点是引入 Lambda 表达式,使用它设计的代码会更加简洁。当开发者在编写 Lambda 表达式时,也会随之被编译成一个函数式接口。
    发表于 08-24 10:25 282次阅读

    华为云开发者桌面全新发布 CodeArts IDE for Python,极致优雅云原生开发体验

    近日,华为云正式发布 CodeArts IDE for Python,这是一款内置华为自研 Python 语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具,为华为云开发者提供卓
    的头像 发表于 05-10 00:27 1200次阅读
    华为云<b class='flag-5'>开发者</b>桌面全新发布 CodeArts IDE for <b class='flag-5'>Python</b>,极致优雅云原生<b class='flag-5'>开发</b>体验