您好,登錄后才能下訂單哦!
PYTHON是一門動態(tài)解釋性的強類型定義語言:編寫時無需定義變量類型;運行時變量類型強制固定;無需編譯,在解釋器環(huán)境直接運行。
動態(tài)和靜態(tài)
靜態(tài)語言:是指在編譯時變量的數(shù)據(jù)類型即可確定的語言,多數(shù)靜態(tài)類型語言要求在使用變量之前必須聲明數(shù)據(jù)類型。例如:C++、Java、Delphi、C# 、go等。
動態(tài)語言:是在運行時確定數(shù)據(jù)類型的語言。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個值的類型。例如:Python、Ruby、Perl等。
強類型和弱類型
強類型和弱類型主要是站在變量類型處理的角度進行分類的。
強類型是指不允許隱式變量類型轉(zhuǎn)換,弱類型則允許隱式類型轉(zhuǎn)換。
所以,關鍵在于變量數(shù)據(jù)類型的轉(zhuǎn)換。
什么叫隱式類型轉(zhuǎn)換?
隱式是指源碼中沒有明顯的類型轉(zhuǎn)換代碼,也就是說,一個變量,你可以直接給他賦值字符串,也可以直接給他賦值數(shù)值,你還可以直接讓字符串類型的變量和數(shù)值類型的變量相加,雖然得出的最終結(jié)果未必是你想象的那樣,但一定不會報錯。
這就是隱式類型轉(zhuǎn)換,弱類型語言,如javascript、php。
Java是強類型語言,不允許隱式類型轉(zhuǎn)換,也就是說,如果你需要拿一個字符串變量當做整型來用,你必須顯式地將變量類型轉(zhuǎn)換好。
換句話說:
優(yōu)點:
Python的定位是“優(yōu)雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。
開發(fā)效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現(xiàn)任何功能,Python官方庫里都有相應的模塊進行支持,直接下載調(diào)用后,在基礎庫的基礎上再進行開發(fā),大大降低開發(fā)周期,避免重復造輪子。
缺點:
速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑于使用Python的主要原因,但其實這里所指的運行速度慢在大多數(shù)情況下用戶是無法直接感知到的,必須借助測試工具才能體現(xiàn)出來,比如你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常夸張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數(shù)情況下Python已經(jīng)完全可以滿足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現(xiàn)的。
代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現(xiàn)。
線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用于同步線程的工具,使得任何時刻僅有一個線程在執(zhí)行,Python的線程是操作系統(tǒng)的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統(tǒng)調(diào)度線程的執(zhí)行。一個python解釋器進程內(nèi)有一條主線程,以及多條用戶程序的執(zhí)行線程。即使在多核CPU平臺上,由于GIL的存在,所以禁止多線程的并行執(zhí)行。關于這個問題的折衷解決方法,我們在以后線程和進程章節(jié)里再進行詳細探討。
區(qū)別:
個人認為,java是解釋型的語言,因為雖然java也需要編譯,編譯成.class文件,但是并不是機器可以識別的語言,而是字節(jié)碼,最終還是需要 jvm的解釋,才能在各個平臺執(zhí)行,這同時也是java跨平臺的原因。所以可是說java即是編譯型的,也是解釋型,但是假如非要歸類的話,從概念上的定義,恐怕java應該歸到解釋型的語言中。
附:
編譯型語言要先編譯再運行,而解釋性語言直接“運行”源代碼。
Python是種強類型的語言。
有人可能會問,在python中,可以這樣寫而不報錯,所以是弱類型的:
i=1
print(i)
i="hello world"
print(i)
實際上,這里python表現(xiàn)出的特性為,他是一種動態(tài)類型語言。動態(tài)類型語言是一種在運行期間才去確定數(shù)據(jù)類型的語言,與靜態(tài)類型相反。
VBScript 和 Python 是動態(tài)類型的,因為它們確定一個變量的類型是在您第一次給它賦值的時候。靜態(tài)類型語言是一種在編譯期間就確定數(shù)據(jù)類型的語言。大多數(shù)靜態(tài)類型語言是通過要求在使用任一變量之前聲明其數(shù)據(jù)類型來保證這一點的。Java 和 C 是靜態(tài)類型語言。
Python 是強制類型定義的。指的是加入我們有一個整數(shù),如果不明確地進行轉(zhuǎn)換 ,不能將把它當成一個字符串,所以顯然,C/C++和Java都是強類型語言。 弱類型語言與強類型相反。VBScript 是弱類型的。在 VBScript 中,我們可以將字符串 '12' 和整數(shù) 3 進行連接得到字符串'123',然后可以把它看成整數(shù) 123 ,所有這些都不需要任何的顯示轉(zhuǎn)換。
總結(jié)起來,Python是一種動態(tài)的,強類型語言。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。