perl和python各自擅長什麼領域?

2021-07-22 12:16:16 字數 1841 閱讀 2348

設計乙個語言的初始目的決定了該語言將會內建什麼功能 perl初始是larry為了格式化處理文字而建立的 所以內建了正則 看python居然內建乙個複數型別,我猜測guido最初一定是為了數值計算 而建立了python so,perl擅長文書處理,python擅長數值處理 

perl 設 計之初就是為了方便編寫複雜高效的系統指令碼,它也是應該最為廣泛的指令碼程式語言。它在程式設計方面相當於瑞士軍刀,對字元、文字檔案處理能力很強,以前要求 shell+sed+awk+c才能完成的任務,只需perl指令碼就可以完成了。而且應用領域一直在拓寬,支援物件導向程式設計。

python 物件導向的動態公共語言,適於指令碼程式設計和快速開發,它最顯著的特點是作為編譯語言(如c)和指令碼語言(如perl)之間的橋接語言,它具有的強大功能,可擴充性及物件導向的特徵使其成為大規模應用程式開發工具。

關於強型別 

perl語言中,資料的型別,取決於資料所處的上下文。

python語言中,資料型別,是資料自身確定的。python因此一般被認為是強型別語言,而perl則不是,不過perl的愛好者一般不關心這種事情。實際上,換個角度來看,python是固定的資料型別,變化的函式型別;而 perl則是固定的函式型別,變化的資料型別。都很有意思。 

關於 內建基礎型別 

perl的基礎型別叫做scalar,這是為了和後面的array和hash做區別。scalar可以是數字,也可以是字串。基本上說,scalar非此即彼;換句話說,scalar既是數字,又是字串。scalar到底是字串,還是數字,完全取決於使用scalar的上下文,如果是乙個處理字串的函式,那麼它是字串;如果是乙個處理數字的函式,那麼它是數字。perl會盡一切努力完成它們之間的轉化,無論在你看來有多麼荒誕。 perl中,所有scalar都以$開頭,所有以$開頭的都是scalar。 python的基礎型別,同樣,不是數字,就是字串。但是,不可能既是數字,又是字串。python會判斷變數到底是數字,還是字串,以此來選擇怎麼解釋函式;如果它找不到乙個合適的解釋,那麼python會丟擲異常。一般來說,這種策略能夠取悅一部分程式設計師,同時讓另外一部分人感覺很不爽。

關於 復合型別 

perl有兩種復合型別:array和hash。python有三種復合型別:tuple, list, dict。 python中的tuple+list,完全對應於perl中的array;因此不存在誰提供的 型別更豐富這樣的問題。 

關於 建立 

perl中建立array可以通過()。但是()到底是否會建立乙個array,這取決於所處的上下文;換句話說,只有當上下文要求乙個array時,()才會產生乙個array。事實上,()可能建立乙個scalar,也可能建立乙個hash,這完全取決於上下文。 

關於訪問單個元素 

perl中我們可以用$foo[$bar]來表示foo這個array中的第$bar個元素。特別詭異的是,這個foo和$foo中的foo是完全不相干的,這回應了前面提到的perl原則,乙個符號到底什麼意思,取決於上下文。並且,在$foo[$bar]這樣乙個上下文中,$bar會被perl 搞成整數,無論它本來是什麼。 perl中,用乙個越界的idx訪問array是完全正常的,perl會悄悄的擴充套件array。python中,tuple或者是list,兩者都通過lst[idx]這樣的形式訪問其中的元素。 python中,用乙個越界的idx訪問array會觸發乙個異常。 python中,提供了強大的slice功能。 

關於做為整體的list 

perl中,用@開頭的名字表示整個array,據說是因為@是array的字頭。但是,又根據perl的原則,@foo這樣的array也可以被使用到乙個需要scalar的環境中去,perl會盡力把@foo轉換成乙個scalar,一般來說,這個scalar就是@foo的長度。 python中,直接使用變數名,就能獲得整個list(或者tuple)。

**:

slice splice和split各自的用法

js的slice splice 和split 這三個方法,他們是用來操作字串或陣列的,因為長得很像,所以很容易混淆,忘記他們各自的用法,今天就好好總結記錄一下 一 slice index,num 1 運算元組 該方法是對陣列進行部分擷取,並返回乙個新的陣列,可以含兩個引數,引數一index是需要擷取...

如何平衡 擅長,興趣和工作

普通人,一定要在你不喜歡地方優秀,說明了你的學習力,這對於你喜歡的,一樣重要 利用心流模式,把工作深入化,專家化,省下的時間,去做感興趣的事。努力 很多人努力程度之低,不足以拼天賦,所以,通過科學的努力,是可以在你不擅長,不感興趣的領域有所成就,至少,小康不成問題。興趣努力是為了生活,當然此處沒有生...

perl和python的資料型別對比

perl的資料型別有 1.標量 標量是包括數字 字串 日期等,但perl沒有細分這些字串 標量宣告的時候用 標識 my var a 3 2.陣列,perl的陣列是用 標識的,乙個變數前面有 標識這是個陣列 my array 1 wang tian zhong 3 3.hash hash標識是用 my...