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