python深度優(yōu)先算法 為什么C#排名和Python相差越來(lái)越大?
為什么C#排名和Python相差越來(lái)越大?以下是我的一些個(gè)人觀點(diǎn)。如果我錯(cuò)了,請(qǐng)糾正我:首先,從語(yǔ)言本身的角度來(lái)看:C#可以看作是一種編譯語(yǔ)言(嚴(yán)格地說(shuō),是一種混合語(yǔ)言),Python是一種解釋性語(yǔ)言
為什么C#排名和Python相差越來(lái)越大?
以下是我的一些個(gè)人觀點(diǎn)。如果我錯(cuò)了,請(qǐng)糾正我:
首先,從語(yǔ)言本身的角度來(lái)看:
C#可以看作是一種編譯語(yǔ)言(嚴(yán)格地說(shuō),是一種混合語(yǔ)言),Python是一種解釋性語(yǔ)言。
C的優(yōu)勢(shì)?速度越來(lái)越快。由于編譯只進(jìn)行一次,運(yùn)行時(shí)不需要編譯,因此編譯語(yǔ)言的程序執(zhí)行效率很高。
同時(shí),編譯是一把雙刃劍。如果修改了代碼,則需要重新編譯整個(gè)模塊,并根據(jù)操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件。
魚(yú)和熊掌不能兼得。Python的優(yōu)點(diǎn)是它具有很強(qiáng)的跨平臺(tái)能力。代碼修改不需要停止。缺點(diǎn)是每次運(yùn)行時(shí)都要解釋。
然而,隨著軟硬件的快速發(fā)展,解釋運(yùn)行時(shí)間與編譯后運(yùn)行時(shí)間的時(shí)差將越來(lái)越小,Python語(yǔ)言“優(yōu)雅”、“清晰”、“簡(jiǎn)單”的優(yōu)勢(shì)也越來(lái)越明顯。
其次,從類(lèi)庫(kù)生態(tài)的角度來(lái)看:
Python有大量的第三方類(lèi)庫(kù)。在其他一些語(yǔ)言中,實(shí)現(xiàn)一個(gè)函數(shù)可能需要幾十到幾百行代碼,而Python可能會(huì)調(diào)用其他語(yǔ)言的下一個(gè)輪子,只需要幾行代碼甚至一行代碼。然而,c#一開(kāi)始是基于Windows平臺(tái)的,后來(lái)可以是跨平臺(tái)的、開(kāi)源的。第三方類(lèi)庫(kù)的數(shù)量沒(méi)有python那么多。
最后,從發(fā)展前景來(lái)看:
人工智能,大數(shù)據(jù)時(shí)代已經(jīng)到來(lái),數(shù)據(jù)清洗和分析是python的強(qiáng)項(xiàng),人工智能中有很多基于python的優(yōu)秀框架。如果有人說(shuō)Python效率低下,如果我的硬件不符合標(biāo)準(zhǔn),我需要效率,那么人們更愿意使用C/C而不是C#。
總之,c和Python之間的排名差距越來(lái)越大。
!我的觀點(diǎn)是,首先,我們需要有Python的基礎(chǔ)。在有了基礎(chǔ)的前提下,使用框架是最快的,可以在短時(shí)間內(nèi)實(shí)現(xiàn)爬蟲(chóng)。這里我推薦scratch,它是一個(gè)基于python的開(kāi)源web爬蟲(chóng)框架。其易用性、靈活性、易擴(kuò)展性和跨平臺(tái)性等特點(diǎn)使其受到廣大用友的歡迎。
使用刮削也非常簡(jiǎn)單。您只需要關(guān)注spider文件,它實(shí)際上是web頁(yè)面上數(shù)據(jù)處理的一部分。以《詩(shī)詞王-爬行詩(shī)》為例。我們可以在spider中這樣寫(xiě):
上面的代碼整體上分為兩部分,一部分是提取網(wǎng)頁(yè)中的URL,另一部分是從詩(shī)歌細(xì)節(jié)頁(yè)面中提取需要爬網(wǎng)的內(nèi)容。我選擇在這里爬行的數(shù)據(jù)是詩(shī)歌作者、內(nèi)容、網(wǎng)站標(biāo)簽等等。
很方便嗎?如果不需要存儲(chǔ)數(shù)據(jù),這里就足夠了。定義項(xiàng)字段以爬網(wǎng)數(shù)據(jù)。如果需要在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù),需要在管道中定義一個(gè)類(lèi)來(lái)存儲(chǔ)數(shù)據(jù)
如上圖所示,定義了mongodb的類(lèi),這樣我們就可以在mongodb中存儲(chǔ)數(shù)據(jù)了。