為了理解動(dòng)態(tài)類型,最好先理解其反面——靜態(tài)類型。
靜態(tài)類型語言有C、JAVA等。這些語言與它們的動(dòng)態(tài)類型對(duì)應(yīng)語言之間的主要區(qū)別在于類型檢查。靜態(tài)類型是在編譯時(shí)進(jìn)行類型檢查,而動(dòng)態(tài)類型是在運(yùn)行時(shí)進(jìn)行類型檢查。
注:這是對(duì)動(dòng)態(tài)類型和靜態(tài)類型的平淡定義。其中具體的技術(shù)細(xì)節(jié)超出了本文要討論的范疇。
由于Python的調(diào)試問題,以及Python語言如何使跟蹤bug的過程變得比現(xiàn)在更復(fù)雜,一些開發(fā)人員對(duì)Python大發(fā)牢騷。
這種抱怨源于這樣一個(gè)事實(shí):作為一種動(dòng)態(tài)類型語言,Python在運(yùn)行時(shí)標(biāo)記錯(cuò)誤,這使得它比Java等靜態(tài)類型語言更容易出錯(cuò)。
理論上,這是一個(gè)威脅,畢竟考慮到一個(gè)著名的諺語——是人都會(huì)犯錯(cuò)。但是在實(shí)踐中,我懷疑類型錯(cuò)誤有沒有他們聲稱的那樣嚴(yán)重。
說真的,現(xiàn)在誰還犯類型錯(cuò)誤?
靜態(tài)類型語言遠(yuǎn)不是一個(gè)無障礙的調(diào)試避風(fēng)港。除了類型錯(cuò)誤之外,大多數(shù)靜態(tài)類型語言都無法捕獲到你可能認(rèn)為應(yīng)該檢測(cè)到的細(xì)微錯(cuò)誤。這些錯(cuò)誤同樣發(fā)生在靜態(tài)類型和動(dòng)態(tài)類型中。
此外,幾乎沒有代碼會(huì)不經(jīng)過單元測(cè)試就部署。單元測(cè)試可以很好地防范類型錯(cuò)誤。只有極少數(shù)情況下,類型錯(cuò)誤會(huì)繞過單元測(cè)試來搞亂代碼。在調(diào)試方面,編程語言的另一個(gè)特性是安全類型和不安全類型。允許用戶重寫系統(tǒng)類型的語言被認(rèn)為具有不安全的類型——例如C。雖然不安全的類型給了用戶對(duì)類型的控制,但它的誤用會(huì)導(dǎo)致程序任意崩潰。
大多數(shù)靜態(tài)類型語言都是不安全的類型系統(tǒng)。然而,JAVA是一種安全類型語言。Python和我所知道的其它動(dòng)態(tài)類型編程語言也是如此。
最后,我更愿意使用像Python這樣方便和高級(jí)的語言編寫一百萬次代碼,而不是陷入JAVA等語言的低級(jí)細(xì)節(jié)中。
以上內(nèi)容為大家介紹了python的動(dòng)態(tài)類型,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://gzshyw.cn/