偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python不是一種偉大的編程語言

原創(chuàng) 精選
開發(fā) 前端
雖然Python無疑是一款流行且功能強(qiáng)大的編程語言,但它并非沒有缺陷和爭議點(diǎn)。通過研究Python的優(yōu)勢,劣勢和爭議點(diǎn),我們能夠更準(zhǔn)確的描繪出更平衡的語言視圖。

作者 | Arslan Mirza

編譯 | 徐杰承

作為一門簡潔易用、生態(tài)蓬勃且具有高泛用性的編程語言,Python一直以來都被不少人稱作“編程語言中的瑞士軍刀”。

尤其隨著近來AI熱潮席卷全球,Python在編程語言圈中的地位也隨之水漲船高,甚至一度被視作AI專用語言或大數(shù)據(jù)專用語言。

然而從語言特性出發(fā),Python真的如人們所說的這般偉大么?本文將為你闡明Python語言不那么迷人的方面,而這些可能會讓你質(zhì)疑你對這門流行語言的了解。 

1、優(yōu)點(diǎn)、缺點(diǎn)和爭議點(diǎn)

不可否認(rèn),Python龐大的生態(tài)系統(tǒng)及其大量的第三方庫非常棒。大量的工具和資源選擇使其能夠成為需要快速解決問題或創(chuàng)建原型的開發(fā)人員的首選。

開發(fā)者A:“嘿,我需要建立一個網(wǎng)絡(luò)爬蟲,但我不知道如何開始?!遍_發(fā)者B:“沒問題!只需使用 BeautifulSoup 和 Requests from Python。輕而易舉!” 

然而盡管Python有著值得稱道的優(yōu)勢,但其也有一些令人眼花繚亂的缺點(diǎn)。例如,約有400種格式化字符串的方法。這使得Python給人的感覺不像是一種簡潔易用的語言,而更像是希望將它的使用者繞暈。

開發(fā)者A:“為什么在Python中格式化字符串的方法這么多?!”開發(fā)者B:“我哪知道?我想你最好選擇一個并堅持下去?!?nbsp;

對于某些人來說,Python的強(qiáng)制縮進(jìn)可能是一個很有爭議的問題。雖然它確實(shí)在一定程度上加強(qiáng)了一致性和可讀性,但也有不少人認(rèn)為它有點(diǎn)過于嚴(yán)格。同樣,關(guān)于Python動態(tài)類型的爭論也是一個經(jīng)久不衰的話題,有些程序員喜歡動態(tài)類型的靈活,而另一些程序員則厭惡其所導(dǎo)致的難以發(fā)現(xiàn)的錯誤。

開發(fā)者A:“我喜歡 Python 的強(qiáng)制縮進(jìn)!這能使代碼變得更加簡潔?!?nbsp;開發(fā)者B:“呃,我受不了了!感覺我的代碼就像是穿著一件緊身衣!” 

2、特殊的陷阱

Python的三元表達(dá)式常因其非常規(guī)的排列而被人所詬病。雖然大多數(shù)語言遵循首先聲明條件的一致原則,但 Python 的做法恰恰相反,這可能會導(dǎo)致開發(fā)者在讀取復(fù)雜的表達(dá)式時出現(xiàn)混淆。

開發(fā)者A:“我無法理解Python的三元表達(dá)式?!遍_發(fā)者B:“呃,我想這就像試圖倒讀一個句子?!?nbsp;

Python 對單項(xiàng)元組的語法可能令人頭疼。如果你忘記了結(jié)尾的逗號,它就不再是元組,而是一個表達(dá)式。這可能會導(dǎo)致難以察覺的錯誤并給開發(fā)者帶來挫敗感。

開發(fā)者A:“我又忘記了元組中的尾隨逗號了!” 

開發(fā)者B:“恭喜你,遇到了一個經(jīng)典的Python陷阱?!?nbsp;

Python 的正則表達(dá)式比其他一些語言(如 JavaScript 或 Ruby)需要更多的樣板文件,這會使得它們更笨重、更不優(yōu)雅。

開發(fā)者A:“用Python編寫正則表達(dá)式感覺就像再玩拼圖游戲。”開發(fā)者B:“同意,它并不完全是Python優(yōu)雅的縮影?!?nbsp;

Python “神奇”的雙下劃線屬性對于初學(xué)者來說可能看起來很晦澀難懂,但它們提供了一種強(qiáng)大的方法來自定義對象行為。然而不幸的是,他們神秘的本性經(jīng)常讓新手感到困惑。

開發(fā)者A:“Python中所有這些雙下劃線屬性是怎么回事?”開發(fā)者B:“它們被稱為'神奇方法'。旦是你必須掌握了它們的竅門,它們才會變得強(qiáng)大?!?nbsp;

3、錯誤處理和不可變之謎

Python 的錯誤處理方法鼓勵特定的錯誤處理,這被認(rèn)為是一種好的做法。但是,在一個語句中捕獲所有錯誤及其消息在開發(fā)過程中可能不直觀且繁瑣。

開發(fā)者A:“為什么我不能在 Python 中的單個語句中捕獲所有錯誤?” 開發(fā)者B:“這一切都是為了推廣最佳實(shí)踐。但是這在開發(fā)過程中確實(shí)會很煩人。” 

Python 缺乏對不可變字典或復(fù)雜對象的原生支持,這些也是開發(fā)人員的主要痛點(diǎn)。雖然第三方庫可以填補(bǔ)這一空白,但它仍然是一個難以忽視的不便。

開發(fā)者A:“為什么Python沒有內(nèi)置對不可變字典的支持?”開發(fā)者B:“好問題,但我也不知道為什么,只能感謝第三方庫?!?nbsp;

4、社區(qū)文化沖突

一些Python社區(qū)中的成員經(jīng)常對“Pythonic(優(yōu)雅的、地道的、整潔的)方式”有著近乎狂熱的追求和堅持。這很容易在社區(qū)中形成一些氛圍,讓初學(xué)者或者意見不同的人感到沮喪或不自在。

開發(fā)者A:“我很沮喪,我經(jīng)常被告知自己'不夠Pythonic'。”開發(fā)者B:“你需要專注于編寫干凈、高效的代碼,讓別人認(rèn)同你?!?nbsp;

優(yōu)越感有時會滲透到Python社區(qū),有些Python開發(fā)人員看不起其他語言或編程風(fēng)格。當(dāng)然,這種態(tài)度并不代表整個社區(qū)。許多Python開發(fā)人員欣賞建設(shè)性的批評,并愿意向其他語言和范式學(xué)習(xí)。

開發(fā)者A:“為什么有些Python開發(fā)人員表現(xiàn)得像Python是有史以來最好的語言?”開發(fā)者B:“在任何編程語言社區(qū)中,總會有某種程度的自豪感。但記住,最好的開發(fā)人員總是樂于學(xué)習(xí)和成長。” 

5、Python是否被高估了

對于Python是否被高估了這個辯題,其實(shí)從Python的發(fā)展歷程中我們不難窺得一隅。

十五年前的Python依靠著Web開始逐漸占領(lǐng)市場,彼時Python的背后,是Django以及后來的Flask等Web框架。而在此后真正使Python走上主流的則是數(shù)據(jù)科學(xué)領(lǐng)域的興起。

從最初的NumPy、Scipy,再到后來真正將Python發(fā)揚(yáng)光大的的Pandas、TensorFlow、PyTorch等。正是這些Google、Meta等大廠背書的數(shù)據(jù)科學(xué)框架的流行,才使得Python一步步走到了如今的地位。

然而細(xì)究之下不難發(fā)現(xiàn),這些庫和架構(gòu),卻都不是用Python寫成的,而是C、C++甚至Fortran。時至今日,Python最核心的競爭力依然是其“膠水”屬性,粘合了易用的前端和高性能的后端。

誠然,今天的Python 在數(shù)據(jù)科學(xué)方面累積的優(yōu)勢的確難以被動搖,但在許多其他方面,Python的表現(xiàn)的依然無法超越甚至比肩各領(lǐng)域中的翹楚。

6、結(jié)語

歸根結(jié)底,雖然Python無疑是一款流行且功能強(qiáng)大的編程語言,但它并非沒有缺陷和爭議點(diǎn)。通過研究Python的優(yōu)勢,劣勢和爭議點(diǎn),我們能夠更準(zhǔn)確的描繪出更平衡的語言視圖。

在探索其他編程語言和范式時,也必須意識到這些問題并保持開放的心態(tài)。

畢竟,最好的開發(fā)人員是那些能夠適應(yīng)和學(xué)習(xí)的人,他們擁抱各種編程語言的優(yōu)勢,同樣的,他們也能夠擁抱各種編程語言的劣勢。

參考鏈接:

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

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

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2010-01-25 15:09:17

C++語言

2012-11-01 13:41:25

編程語言BasicPerl

2013-03-12 14:07:06

Java編程

2018-03-12 13:32:02

編程語言程序員語言

2010-11-04 10:55:24

編程語言

2020-07-10 10:48:51

編程語言JavaPython

2012-03-14 11:46:30

ibmdw

2012-03-19 10:45:44

ibmdw

2010-01-21 16:24:02

C++語言

2018-08-21 13:50:05

編程語言JavaPython

2015-08-03 09:36:01

賽迪翻譯

2015-08-31 09:27:21

語言界面UI

2017-07-13 16:43:23

DevOps持續(xù)集成業(yè)務(wù)

2011-07-21 14:17:15

Ceylon

2017-06-22 16:46:45

2020-12-09 10:15:34

Pythonweb代碼

2020-12-23 10:10:23

Pythonweb代碼

2022-07-07 10:33:27

Python姿勢代碼

2022-06-22 09:44:41

Python文件代碼

2022-06-06 15:44:24

大數(shù)據(jù)數(shù)據(jù)分析思維模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號