Python是不是動(dòng)態(tài)強(qiáng)類型的
Python是不是動(dòng)態(tài)強(qiáng)類型的?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、大石橋網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為大石橋等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Python是動(dòng)態(tài)強(qiáng)類型的,我們可以根據(jù)Python的變量定義和使用來進(jìn)行判斷。
Python變量聲明和定義
與C#不同,Python在使用變量之前無須定義它的類型,試著運(yùn)行下面的例子:
i = 12 print i
從上邊我們可以看到,變量 i 在使用前并不需要定義,但是必須聲明以及初始化該變量。試著運(yùn)行下面的例子:
i = 1 print i + j
上面的代碼會(huì)產(chǎn)生一個(gè)異常:“NameError: name 'j' is not defined”,Python提示變量 j 沒有定義。這點(diǎn)和BASIC等弱類型的語言不一樣。在BASIC中,執(zhí)行上述代碼的時(shí)候不會(huì)產(chǎn)生異常,你可以在EXCEL的VBA開發(fā)環(huán)境里試一下,把 print改為MsgBox就可以,結(jié)果會(huì)輸出 1 。這說明Python并不是一種類似BASIC的弱類型語言。
另一方面,Python與C#有一個(gè)很大的差異就是在程序運(yùn)行過程中,同一變量名可以(在不同階段)代表不同類型的數(shù)據(jù),看看下邊的例子:
i = 1 print i,type(i),id(i) i = 10000000000 print i,type(i),id(i) i = 1.1 print i,type(i),id(i)
變量 i 的類型在程序執(zhí)行過程中分別經(jīng)歷了int、long和float的變化,這和靜態(tài)類型語言(如C等)有很大不同。靜態(tài)語言只要一個(gè)變量獲得了一個(gè)數(shù)據(jù)類 型,它就會(huì)一直是這個(gè)類型,變量名代表的是用來存放數(shù)據(jù)的內(nèi)存位置。而Python中使用的變量名只是各種數(shù)據(jù)及對(duì)象的引用,用id()獲取的才是存放數(shù) 據(jù)的內(nèi)存位置,我們輸入的1、10000000000和1.1三個(gè)數(shù)據(jù)均會(huì)保存在id()所指示的這些內(nèi)存位置中,直到垃圾回收車把它拉走(在系統(tǒng)確定你 不再使用它的時(shí)候)。這是動(dòng)態(tài)語言的典型特征,它確定一個(gè)變量的類型是在給它賦值的時(shí)候。
另一方面,Python又是強(qiáng)類型的,試著運(yùn)行下邊的例子:
# -*- coding: utf-8 -*- i = 10; j = 'ss' print i+j #正確的寫法是print str(i)+j,輸出10ss
會(huì)產(chǎn)生一個(gè)異常:“TypeError: unsupported operand type(s) for +: 'int' and 'str'”。在BASIC等弱類型的語言中,上邊的例子會(huì)正常運(yùn)行并返回(雖然有時(shí)候是不可預(yù)期的)結(jié)果。
所以,我們說Python既是一種動(dòng)態(tài)類型語言,同時(shí)也是一種強(qiáng)類型的語言,這點(diǎn)是和C#不同的地方。對(duì)于Python的這種變量的聲明、定義和使 用方式,C#程序員可能要花一段時(shí)間去適應(yīng),不過相信你會(huì)很快就喜歡上它,因?yàn)樗屖虑樽兊酶雍唵危ǘ也粫?huì)不安全)。而且,C# 4.0 已經(jīng)開始用類似的方式定義和使用變量(通過在變量名前加關(guān)鍵字dynamic),如果你先學(xué)了Python變量,將能夠更快的適應(yīng)C# 4.0的動(dòng)態(tài)編程特征。
看完上述內(nèi)容,你們掌握Python是不是動(dòng)態(tài)強(qiáng)類型的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁名稱:Python是不是動(dòng)態(tài)強(qiáng)類型的
URL網(wǎng)址:http://www.xueling.net.cn/article/ppoihi.html