Python是否被高估了?

news2024/12/26 11:40:22

作为一门简洁易用、生态蓬勃且具有高泛用性的编程语言,Python一直以来都被不少人称作“编程语言中的瑞士军刀”。

尤其随着近来AI热潮席卷全球,Python在编程语言圈中的地位也随之水涨船高,甚至一度被视作AI专用语言或大数据专用语言。

然而从语言特性出发,Python真的如人们所说的这般伟大么?本文将为你阐明Python语言不那么迷人的方面,而这些可能会让你质疑你对这门流行语言的了解。

01

优点、缺点和争议点

不可否认,Python庞大的生态系统及其大量的第三方库非常棒。大量的工具和资源选择使其能够成为需要快速解决问题或创建原型的开发人员的首选。

开发者A:“嘿,我需要建立一个网络爬虫,但我不知道如何开始。”
开发者B:“没问题!只需使用 BeautifulSoup 和 Requests from Python。轻而易举!”

然而尽管Python有着值得称道的优势,但其也有一些令人眼花缭乱的缺点。例如,约有400种格式化字符串的方法。这使得Python给人的感觉不像是一种简洁易用的语言,而更像是希望将它的使用者绕晕。

开发者A:“为什么在Python中格式化字符串的方法这么多?!”
开发者B:“我哪知道?我想你最好选择一个并坚持下去。”

对于某些人来说,Python的强制缩进可能是一个很有争议的问题。虽然它确实在一定程度上加强了一致性和可读性,但也有不少人认为它有点过于严格。同样,关于Python动态类型的争论也是一个经久不衰的话题,有些程序员喜欢动态类型的灵活,而另一些程序员则厌恶其所导致的难以发现的错误。

开发者A:“我喜欢 Python 的强制缩进!这能使代码变得更加简洁。”
开发者B:“呃,我受不了了!感觉我的代码就像是穿着一件紧身衣!”


02

特殊的陷阱

Python的三元表达式常因其非常规的排列而被人所诟病。虽然大多数语言遵循首先声明条件的一致原则,但 Python 的做法恰恰相反,这可能会导致开发者在读取复杂的表达式时出现混淆。

开发者A:“我无法理解Python的三元表达式。”
开发者B:“呃,我想这就像试图倒读一个句子。”

Python 对单项元组的语法可能令人头疼。如果你忘记了结尾的逗号,它就不再是元组,而是一个表达式。这可能会导致难以察觉的错误并给开发者带来挫败感。

开发者A:“我又忘记了元组中的尾随逗号了!”

开发者B:“恭喜你,遇到了一个经典的Python陷阱。”

Python 的正则表达式比其他一些语言(如 JavaScript 或 Ruby)需要更多的样板文件,这会使得它们更笨重、更不优雅。

开发者A:“用Python编写正则表达式感觉就像再玩拼图游戏。”
开发者B:“同意,它并不完全是Python优雅的缩影。”

Python “神奇”的双下划线属性对于初学者来说可能看起来很晦涩难懂,但它们提供了一种强大的方法来自定义对象行为。然而不幸的是,他们神秘的本性经常让新手感到困惑。

开发者A:“Python中所有这些双下划线属性是怎么回事?”
开发者B:“它们被称为’神奇方法’。旦是你必须掌握了它们的窍门,它们才会变得强大。”

03

错误处理和不可变之谜

Python 的错误处理方法鼓励特定的错误处理,这被认为是一种好的做法。但是,在一个语句中捕获所有错误及其消息在开发过程中可能不直观且繁琐。

开发者A:“为什么我不能在 Python 中的单个语句中捕获所有错误?”
开发者B:“这一切都是为了推广最佳实践。但是这在开发过程中确实会很烦人。”

Python 缺乏对不可变字典或复杂对象的原生支持,这些也是开发人员的主要痛点。虽然第三方库可以填补这一空白,但它仍然是一个难以忽视的不便。

开发者A:“为什么Python没有内置对不可变字典的支持?”
开发者B:“好问题,但我也不知道为什么,只能感谢第三方库。”

04

社区文化冲突

一些Python社区中的成员经常对“Pythonic(优雅的、地道的、整洁的)方式”有着近乎狂热的追求和坚持。这很容易在社区中形成一些氛围,让初学者或者意见不同的人感到沮丧或不自在。

开发者A:“我很沮丧,我经常被告知自己’不够Pythonic’。”
开发者B:“你需要专注于编写干净、高效的代码,让别人认同你。”

优越感有时会渗透到Python社区,有些Python开发人员看不起其他语言或编程风格。当然,这种态度并不代表整个社区。许多Python开发人员欣赏建设性的批评,并愿意向其他语言和范式学习。

开发者A:“为什么有些Python开发人员表现得像Python是有史以来最好的语言?”
开发者B:“在任何编程语言社区中,总会有某种程度的自豪感。但记住,最好的开发人员总是乐于学习和成长。”

05

Python是否被高估了

对于Python是否被高估了这个辩题,其实从Python的发展历程中我们不难窥得一隅。

十五年前的Python依靠着Web开始逐渐占领市场,彼时Python的背后,是Django以及后来的Flask等Web框架。而在此后真正使Python走上主流的则是数据科学领域的兴起。

从最初的NumPy、Scipy,再到后来真正将Python发扬光大的的Pandas、TensorFlow、PyTorch等。正是这些Google、Meta等大厂背书的数据科学框架的流行,才使得Python一步步走到了如今的地位。

然而细究之下不难发现,这些库和架构,却都不是用Python写成的,而是C、C++甚至Fortran。时至今日,Python最核心的竞争力依然是其“胶水”属性,粘合了易用的前端和高性能的后端。

诚然,今天的Python 在数据科学方面累积的优势的确难以被动摇,但在许多其他方面,Python的表现的依然无法超越甚至比肩各领域中的翘楚。

06

结语

归根结底,虽然Python无疑是一款流行且功能强大的编程语言,但它并非没有缺陷和争议点。通过研究Python的优势,劣势和争议点,我们能够更准确的描绘出更平衡的语言视图。

在探索其他编程语言和范式时,也必须意识到这些问题并保持开放的心态。

毕竟,最好的开发人员是那些能够适应和学习的人,他们拥抱各种编程语言的优势,同样的,他们也能够拥抱各种编程语言的劣势

参考链接:

https://levelup.gitconnected.com/python-is-not-a-great-programming-language-e0edfd513961

https://www.zhihu.com/question/266096929/answer/2383570933

作者 | Arslan Mirza 编译 | 徐杰承


---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为交换机:MSTP的基础配置

现状分析 某公司的总部包含4个部门,为了增加网络的可靠性,需要所在的交换机上配置MSTP,确保网络不会出现环路问题,同时实现负载均衡。 网络设计 搭建网络拓扑,配置VLAN,Trunk,链路聚合。在4台…

腾讯云centos7.6安装部署备忘

1.Mysql 1.1 安装mysql wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server 1.1.1 安装后重启 service mysqld restart 1.1.2 初次安装mysql,root账…

谁懂啊!自制的科普安全手册居然火了

自制的科普安全手册居然火了 谁懂啊! 嗨嗨嗨!小仙女们,有没有见过这样的可以翻页的电子安全手册呢?自己随手就能轻松制作手册,结果一晚浏览量这么多!这可真是让人又惊又喜啊!快来分享一下我的喜…

vscode 左侧文件夹不见了

1.选择view 2.选择open view 3.找到folder 4.左侧出现folder

安达发|离散型制造业更适合APS智能排产软件

在当今全球制造业竞争激烈的环境下,企业如何提高生产效率、降低成本、提升产品质量和满足客户需求,成为了制造业发展的关键。其中,智能化生产管理技术的应用,尤其是APS(Advanced Planning and Scheduling,智能计划与排程)智能排产…

和鲸科技两项成果入选“智赋百业”2023年人工智能融合发展与安全应用典型案例

近日,2023 年中国国际服务贸易交易会人工智能融合发展与安全应用论坛在北京召开,大会同期举办了“智赋百业”人工智能融合发展与安全应用典型案例发布仪式,为由国家工业信息安全发展研究中心遴选出的 100 项优秀应用案例进行了授牌。上海和今…

【笔试强训选择题】Day40.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

【笔试强训选择题】Day41.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff…

ChatGPT写文书再次翻车,行文寡淡没有灵魂一眼假!

留学申请文书是每个渴望出国深造的学子都会面临的一道门槛。近年来,随着人工智能ChatGPT的迅猛发展,“文能写文章、武能改Bug”,AI代写留学文书逐渐成为一种趋势,不少人直呼申请文书有救了!然而,这种趋势是…

【启扬方案】基于启扬安卓屏一体机的医疗手推车解决方案

医疗手推车作为医院基础设施的一部分,被广泛应用于医院内部,包括急诊室、手术室、病房和其他临床部门。伴随着互联网技术的发展和行业的渗透,智慧医疗受到越来越多的青睐,这也使得很多医疗设施得到了改进,医疗手推车也…

在ExoPlayer中使用协程:构建强大的Android媒体播放器

在ExoPlayer中使用协程:构建强大的Android媒体播放器 现今的移动应用世界中,媒体消费是用户体验的核心部分。无论是流媒体视频、音乐播放还是处理自适应媒体格式,强大的媒体播放器对于提供无缝和愉悦的用户体验至关重要。而在安卓平台上&…

Java“牵手”淘宝商品详情数据,淘宝商品详情接口,淘宝API接口申请指南介绍

采集场景 在淘宝首页(taobao.com)输入关键词搜索,采集搜索后得到的商品列表页数据然后再点击进去即是商品详情页面数据。示例中关键词为【新款连衣裙】,可根据需求进行更换,同时支持自动批量输入多个关键词&#xff0…

【2023年Google 开发者大会】

文章目录 Google Cloud 如何加速创新,加强信息安全一、Google Cloud 如何加速创新?1.灵活的云服务2.开放源代码平台3.先进的人工智能技术 二、Google Cloud 如何加强信息安全?1.高级安全防护2.强大的身份验证和访问控制3.基于机器学习的威胁检…

MyBatis-Plus更新字段为null时,update语句为null字段不生效的解决方法

文章目录 1.异常说明:2.原理:3.解决办法:1)修改MyBatis-Plus 全局默认策略2)修改实体类注解,改变字段的忽略判断 4.字段策略全解1)官方文档2)字段策略介绍​​1、FieldStrategy作用2…

iPhone照片删除了怎么恢复?宝藏方法分享!

自从养了宠物之后,天天喜欢给它拍照。在清理相册的时候不小心把很喜欢的照片给误删了,想问问大家有什么比较好的照片恢复方法吗? 大家在养了可爱的宠物之后,避免不了给自己的爱宠拍照。但是一拍可能就停不下来了,从而导…

代码随想录算法训练营day49|121. 买卖股票的最佳时机 |122.买卖股票的最佳时机II

121. 买卖股票的最佳时机 力扣题目链接 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。…

气象监测站的分类及应用领域

随着全球气候变化的加剧,气象监测站的角色变得越来越重要。本文将介绍气象监测设备的分类,探讨其应用领域,帮助用户更好的理解气象监测站。 一、气象监测设备分类 气象监测设备主要包括以下几类: 自动气象站:自动气象…

vue中的 render 和 h() 详解

vue中的 render 和 h() 详解 当使用Vue.js进行前端开发时,理解和掌握"render"函数和"h()"函数是非常重要的,因为它们是Vue组件的核心构建和渲染部分 render 和 h()是在Vue.js中常用的两个概念,它们通常用于创建和渲染Vue…

【算法与数据结构】235、LeetCode二叉搜索树的最近公共祖先

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题和这道题类似【算法与数据结构】236、LeetCode二叉树的最近公共祖先,相同的算法也能解…

2023-9-12 01背包问题

题目链接&#xff1a; 朴素版本 #include <iostream> #include <algorithm>using namespace std;const int N 1010;int n, m; int f[N][N]; int v[N], w[N];int main() {cin >> n >> m;for(int i 1; i < n; i) cin >> v[i] >> w[i];…