欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python動(dòng)態(tài)強(qiáng)類型解釋型語言原理解析

 更新時(shí)間:2020年03月25日 08:32:58   作者:jueyuanfengsheng  
這篇文章主要介紹了Python動(dòng)態(tài)強(qiáng)類型解釋型語言原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

PYTHON是一門動(dòng)態(tài)解釋性的強(qiáng)類型定義語言:編寫時(shí)無需定義變量類型;運(yùn)行時(shí)變量類型強(qiáng)制固定;無需編譯,在解釋器環(huán)境直接運(yùn)行。

動(dòng)態(tài)和靜態(tài)

靜態(tài)語言:是指在編譯時(shí)變量的數(shù)據(jù)類型即可確定的語言,多數(shù)靜態(tài)類型語言要求在使用變量之前必須聲明數(shù)據(jù)類型。例如:C++、Java、Delphi、C# 、go等。

動(dòng)態(tài)語言:是在運(yùn)行時(shí)確定數(shù)據(jù)類型的語言。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個(gè)值的類型。例如:Python、Ruby、Perl等。

強(qiáng)類型和弱類型

強(qiáng)類型和弱類型主要是站在變量類型處理的角度進(jìn)行分類的。

強(qiáng)類型是指不允許隱式變量類型轉(zhuǎn)換,弱類型則允許隱式類型轉(zhuǎn)換。

所以,關(guān)鍵在于變量數(shù)據(jù)類型的轉(zhuǎn)換。

什么叫隱式類型轉(zhuǎn)換?

隱式是指源碼中沒有明顯的類型轉(zhuǎn)換代碼,也就是說,一個(gè)變量,你可以直接給他賦值字符串,也可以直接給他賦值數(shù)值,你還可以直接讓字符串類型的變量和數(shù)值類型的變量相加,雖然得出的最終結(jié)果未必是你想象的那樣,但一定不會(huì)報(bào)錯(cuò)。

這就是隱式類型轉(zhuǎn)換,弱類型語言,如javascript、php。

Java是強(qiáng)類型語言,不允許隱式類型轉(zhuǎn)換,也就是說,如果你需要拿一個(gè)字符串變量當(dāng)做整型來用,你必須顯式地將變量類型轉(zhuǎn)換好。

換句話說:

  • 強(qiáng)類型語言,當(dāng)你定義一個(gè)變量是某個(gè)類型,如果不經(jīng)過代碼顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)化)過,它就永遠(yuǎn)都是這個(gè)類型,如果把它當(dāng)做其他類型來用,就會(huì)報(bào)錯(cuò)
  • 弱類型語言,你想把這個(gè)變量當(dāng)做什么類型來用,就當(dāng)做什么類型來用,語言的解析器會(huì)自動(dòng)(隱式)轉(zhuǎn)換。

優(yōu)點(diǎn):

Python的定位是“優(yōu)雅”、“明確”、“簡(jiǎn)單”,所以Python程序看上去總是簡(jiǎn)單易懂,初學(xué)者學(xué)Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復(fù)雜的程序。

開發(fā)效率非常高,Python有非常強(qiáng)大的第三方庫,基本上你想通過計(jì)算機(jī)實(shí)現(xiàn)任何功能,Python官方庫里都有相應(yīng)的模塊進(jìn)行支持,直接下載調(diào)用后,在基礎(chǔ)庫的基礎(chǔ)上再進(jìn)行開發(fā),大大降低開發(fā)周期,避免重復(fù)造輪子。

  • 高級(jí)語言————當(dāng)你用Python語言編寫程序的時(shí)候,你無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)
  • 可移植性————由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過改動(dòng)使它能夠工 作在不同平臺(tái)上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就幾乎可以在市場(chǎng)上所有的系統(tǒng)平臺(tái)上運(yùn)行
  • 可擴(kuò)展性————如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然后在你的Python程序中使用它們。
  • 可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。

缺點(diǎn):  

速度慢,Python 的運(yùn)行速度相比C語言確實(shí)慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑于使用Python的主要原因,但其實(shí)這里所指的運(yùn)行速度慢在大多數(shù)情況下用戶是無法直接感知到的,必須借助測(cè)試工具才能體現(xiàn)出來,比如你用C運(yùn)一個(gè)程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非??鋸埩?,但是你是無法直接通過肉眼感知的,因?yàn)橐粋€(gè)正常人所能感知的時(shí)間最小單位是0.15-0.4s左右,哈哈。其實(shí)在大多數(shù)情況下Python已經(jīng)完全可以滿足你對(duì)程序速度的要求,除非你要寫對(duì)速度要求極高的搜索引擎等,這種情況下,當(dāng)然還是建議你用C去實(shí)現(xiàn)的。

代碼不能加密,因?yàn)镻YTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認(rèn)為這算是一個(gè)缺點(diǎn),如果你的項(xiàng)目要求源代碼必須是加密的,那你一開始就不應(yīng)該用Python來去實(shí)現(xiàn)。

線程不能利用多CPU問題,這是Python被人詬病最多的一個(gè)缺點(diǎn),GIL即全局解釋器鎖(Global Interpreter Lock),是計(jì)算機(jī)程序設(shè)計(jì)語言解釋器用于同步線程的工具,使得任何時(shí)刻僅有一個(gè)線程在執(zhí)行,Python的線程是操作系統(tǒng)的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統(tǒng)調(diào)度線程的執(zhí)行。一個(gè)python解釋器進(jìn)程內(nèi)有一條主線程,以及多條用戶程序的執(zhí)行線程。即使在多核CPU平臺(tái)上,由于GIL的存在,所以禁止多線程的并行執(zhí)行。關(guān)于這個(gè)問題的折衷解決方法,我們?cè)谝院缶€程和進(jìn)程章節(jié)里再進(jìn)行詳細(xì)探討。

  • 編譯型語言:把做好的源程序全部編譯成二進(jìn)制代碼的可運(yùn)行程序。然后,可直接運(yùn)行這個(gè)程序。
  • 解釋型語言:把做好的源程序翻譯一句,然后執(zhí)行一句,直至結(jié)束!

區(qū)別:

  • 編譯型語言,執(zhí)行速度快、效率高;依靠編譯器、跨平臺(tái)性差些。
  • 解釋型語言,執(zhí)行速度慢、效率低;依靠解釋器、跨平臺(tái)性好。

個(gè)人認(rèn)為,java是解釋型的語言,因?yàn)殡m然java也需要編譯,編譯成.class文件,但是并不是機(jī)器可以識(shí)別的語言,而是字節(jié)碼,最終還是需要 jvm的解釋,才能在各個(gè)平臺(tái)執(zhí)行,這同時(shí)也是java跨平臺(tái)的原因。所以可是說java即是編譯型的,也是解釋型,但是假如非要?dú)w類的話,從概念上的定義,恐怕java應(yīng)該歸到解釋型的語言中。
附:

  • 編譯型的語言包括:C、C++、Delphi、Pascal、Fortran
  • 解釋型的語言包括:Java、Basic、javascript

編譯型語言要先編譯再運(yùn)行,而解釋性語言直接“運(yùn)行”源代碼。

Python是種強(qiáng)類型的語言。

有人可能會(huì)問,在python中,可以這樣寫而不報(bào)錯(cuò),所以是弱類型的:

i=1
print(i)
i="hello world"
print(i)

實(shí)際上,這里python表現(xiàn)出的特性為,他是一種動(dòng)態(tài)類型語言。動(dòng)態(tài)類型語言是一種在運(yùn)行期間才去確定數(shù)據(jù)類型的語言,與靜態(tài)類型相反。

VBScript 和 Python 是動(dòng)態(tài)類型的,因?yàn)樗鼈兇_定一個(gè)變量的類型是在您第一次給它賦值的時(shí)候。靜態(tài)類型語言是一種在編譯期間就確定數(shù)據(jù)類型的語言。大多數(shù)靜態(tài)類型語言是通過要求在使用任一變量之前聲明其數(shù)據(jù)類型來保證這一點(diǎn)的。Java 和 C 是靜態(tài)類型語言。

Python 是強(qiáng)制類型定義的。指的是加入我們有一個(gè)整數(shù),如果不明確地進(jìn)行轉(zhuǎn)換 ,不能將把它當(dāng)成一個(gè)字符串,所以顯然,C/C++和Java都是強(qiáng)類型語言。 弱類型語言與強(qiáng)類型相反。VBScript 是弱類型的。在 VBScript 中,我們可以將字符串 '12' 和整數(shù) 3 進(jìn)行連接得到字符串'123',然后可以把它看成整數(shù) 123 ,所有這些都不需要任何的顯示轉(zhuǎn)換。

總結(jié)起來,Python是一種動(dòng)態(tài)的,強(qiáng)類型語言。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Selenium python時(shí)間控件輸入問題解決方案

    Selenium python時(shí)間控件輸入問題解決方案

    這篇文章主要介紹了Selenium python時(shí)間控件輸入問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python爬蟲爬取淘寶商品信息

    python爬蟲爬取淘寶商品信息

    這篇文章主要為大家詳細(xì)介紹了python爬蟲爬取淘寶商品信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 關(guān)于Pandas缺失值inf與nan的處理實(shí)踐

    關(guān)于Pandas缺失值inf與nan的處理實(shí)踐

    這篇文章主要介紹了關(guān)于Pandas缺失值inf與nan的處理實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 基于PyQt5實(shí)現(xiàn)SqlServer數(shù)據(jù)庫表導(dǎo)出Excel表格小工具

    基于PyQt5實(shí)現(xiàn)SqlServer數(shù)據(jù)庫表導(dǎo)出Excel表格小工具

    這篇文章主要為大家詳細(xì)介紹了PyQt5的應(yīng)用案例之實(shí)現(xiàn)SqlServer數(shù)據(jù)庫表導(dǎo)出Excel表格小工具,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2023-12-12
  • 讓你Python到很爽的加速遞歸函數(shù)的裝飾器

    讓你Python到很爽的加速遞歸函數(shù)的裝飾器

    這篇文章主要介紹了讓你Python到很爽的加速遞歸函數(shù)的裝飾器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解

    python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解

    今天小編就為大家分享一篇python數(shù)據(jù)預(yù)處理 :數(shù)據(jù)共線性處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Pandas數(shù)據(jù)處理加速技巧匯總

    Pandas數(shù)據(jù)處理加速技巧匯總

    Pandas?處理數(shù)據(jù)的效率還是很優(yōu)秀的,相對(duì)于大規(guī)模的數(shù)據(jù)集只要掌握好正確的方法,就能讓在數(shù)據(jù)處理時(shí)間上節(jié)省很多很多的時(shí)間。本文為大家匯總了一些Pandas數(shù)據(jù)處理加速技巧,需要的可以參考一下
    2022-04-04
  • python numpy函數(shù)中的linspace創(chuàng)建等差數(shù)列詳解

    python numpy函數(shù)中的linspace創(chuàng)建等差數(shù)列詳解

    numpy.linspace是用于創(chuàng)建一個(gè)一維數(shù)組,并且是等差數(shù)列構(gòu)成的一維數(shù)組,下面這篇文章主要給大家介紹了關(guān)于python numpy函數(shù)中的linspace創(chuàng)建等差數(shù)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • Python中的流程控制詳解

    Python中的流程控制詳解

    這篇文章主要介紹了Python中的流程控制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • 解決python3捕獲cx_oracle拋出的異常錯(cuò)誤問題

    解決python3捕獲cx_oracle拋出的異常錯(cuò)誤問題

    今天小編就為大家分享一篇解決python3捕獲cx_oracle拋出的異常錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評(píng)論