Python的全面生態(tài)
python的數(shù)據(jù)生態(tài)覆蓋廣泛并在持續(xù)擴(kuò)展。從支持TensorFlow運(yùn)行Keras的Python封裝,到諸如scikit-learn和NumPy的機(jī)器學(xué)習(xí)庫,從面向Spark和Dask集群的Python接口,到利用Jupyternotebooks或者Pandas進(jìn)行代碼測試,數(shù)據(jù)科學(xué)家和工程師可以在熟悉的Python語法下做任何事。
Python的靈活性,是一家位于華盛頓特區(qū)的企業(yè)最看重的,他們使用Python開發(fā)數(shù)據(jù)pipeline工具。其CTOChrisWhite認(rèn)為,對他們來說Python就是完美的工具。
“從更高層次上看,我們的設(shè)計敏感度,就是既有合理的默認(rèn)設(shè)置也可以深度配置,這樣在有需要的時候可以快速的運(yùn)行起來,在想深入細(xì)化的時候也可以做到深入細(xì)化,”ChrisWhite表示,“Python幫助我們實現(xiàn)了這一目標(biāo),因為說到底Python是一種非常靈活的語言。你不需要知道‘編譯是什么’之類的事,你就可以直接寫出一段腳本?!?/p>
一切都可以回到vanRossum為Python設(shè)計的風(fēng)格,就是要簡單不要復(fù)雜。歸功于其即時可讀性,Python的入門門檻極低。這使得無論是初級碼農(nóng)還是資深程序員都可以一樣的使用Python。
“Python是我了解的不多的幾種可以寫原始腳本的語言之一。你不需要懂太多就可以可以直接運(yùn)行它,”ChrisWhite說,“所以Python非常易用。當(dāng)然你也可以做其他事,比如用C寫擴(kuò)展之類?!?/p>
靈活與性能
與C語言相比,性能并不是Python的強(qiáng)項,這是為了即時的靈活性和易用性而做的一個折中。還好有C擴(kuò)展,提供了實現(xiàn)更高性能的路徑。但是在很多情況下,高性能并不是必須的。
“對于實時處理之類的極端需求,有很多其他編程語言比Python要快得多,”ChrisWhite表示?!暗菍τ谌藗兤匠K幚淼?0%數(shù)據(jù),都無需這樣的高速度?!?/p>
Python的另一大劣勢是類型安全性。Python是強(qiáng)類型語言,這也是被一些人所詬病的。但人們已經(jīng)開始意識到,這并沒有想象中那么嚴(yán)重,ChrisWhite說。
“人們一開始對很多事情都有抱怨,諸如速度和類型安全,現(xiàn)在態(tài)度也緩和了一些??赡茉谌藗兊牟糠謶?yīng)用中這并不是什么大事,”他說,“不支持?jǐn)?shù)據(jù)的類型檢查,確實是個問題,因為大部分?jǐn)?shù)據(jù)是非結(jié)構(gòu)化的。但是Python至少開始迭代并去解決了,而其他語言可能很早就迫使你另做打算?!?/p>
開發(fā)速度是Python的一大加分項。因為它的易用性,開發(fā)者可以輕松攢出點什么,而不需要非得做成大型項目。Python的這種隨意性在Juypter中表現(xiàn)的淋漓盡致,就算代碼并不嚴(yán)謹(jǐn),你也可以在瀏覽器中直接運(yùn)行。
能力放大器
如果使用得當(dāng),Python就可以成為能力放大器,提供先進(jìn)的數(shù)據(jù)工程和數(shù)據(jù)科學(xué)能力,如果使用C或Java,你得成為相關(guān)專家才能做到。ChrisWhite舉例說明,他們的一個客戶使用了基于Python的工具來編排頗為復(fù)雜的數(shù)據(jù)工作流。
“這位客戶提到,他并不是專業(yè)的軟件工程師,但也可以寫出他認(rèn)為高度魯棒、容錯的批處理工作流,并且部署在Kubernetes中,”ChrisWhite講到?!八f,他并不需要完全弄懂那些代碼的含義,只要借助相應(yīng)的工具就能把事做成?!?/p>
Python降低了應(yīng)用門檻,在Python的靈活性和熱情的用戶社區(qū)的幫助下,誰都可以寫出會被DevOps工程師欣然接受的高質(zhì)量代碼。
“Python讓你能夠快速搞定事情,”Hendryx-Parker表示。“而且,如果有單元測試或CI/CD部署等其他各種相關(guān)需求時,Python也提供了可以輕松轉(zhuǎn)換為完整軟件項目的附加能力?!?/p>
開源社區(qū)
Hendryx-Parker認(rèn)為,為Python提供又一大加持的是基于其構(gòu)建的開源社區(qū)。Hendryx-Parker已經(jīng)參加了PythonConference近20年,并且創(chuàng)立了當(dāng)?shù)氐腜ython用戶社群。
“我們的社群成員都非常優(yōu)秀,他們也開放歡迎其他優(yōu)秀人才加入并成為社區(qū)一員,這對技術(shù)人來說并不那么容易?!?/p>
Python有數(shù)千個add-ons、addition和integration,絕大部分都是開源的,但其中也有一些維護(hù)的并不好。這就導(dǎo)致有時候難免會遭遇到過時或壞掉的Python包,Hendryx-Parker說。
反過來說,如果遇到有用但疏于維護(hù)的庫,其實也為Python用戶提供了一個機(jī)會,通過自愿幫助維護(hù)這些代碼來回饋社區(qū)。
“當(dāng)我們的客戶遇到這樣的情況,我們也會勸說他們,允許我們在預(yù)算范圍內(nèi)花些時間來改進(jìn)這些開源項目,”Hendryx-Parker說?!拔艺J(rèn)為這總體來說是好事,是三贏。如果他們能拿到預(yù)算,他們知道他們也需要在供應(yīng)鏈中獲得這樣的能力,就很容易接受了。”
與文檔充分的R生態(tài)相比,Python生態(tài)稍顯無序,這就是有利就有弊,ChrisWhite說。
“R確實很強(qiáng)的吸引力,因為它感覺更像是一個標(biāo)準(zhǔn)。R的軟件包都在同一個‘宇宙’中,可以很好的協(xié)作,我想這就是吸引人們使用R的原因,”他說?!癙ython更像是野生派,你差不多可以做任何事,但沒有Tidyverse那樣嚴(yán)格標(biāo)準(zhǔn)化的一整套R包?!?/p>
而另一方面,Python擁有如此巨大而開放的社區(qū),用戶有大量的支持資源。“社區(qū)中有非常多的優(yōu)質(zhì)資料,你總能快速找到所需的解答,”ChrisWhite說。“不過答案并不是現(xiàn)成的,我們確實還需要專門去查找?!?/p>
Python擁有光明的未來。它已經(jīng)處于或者接近每個人心目中的數(shù)據(jù)科學(xué)和數(shù)據(jù)工程所需技能之首。如果保持現(xiàn)在的勢頭,Python看上去肯定會繼續(xù)增長,直到其他競爭者把它擠下巔峰。
以上內(nèi)容為大家介紹了python的生態(tài)和優(yōu)勢,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.em-kal.com/