第9章 類(lèi)型系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一次課后作業(yè),計(jì)算對(duì)象的表示—值與類(lèi)型請(qǐng)給出R語(yǔ)言和Python語(yǔ)言中哪些值是頭等程序?qū)ο??為什么??qǐng)給出R語(yǔ)言和Python語(yǔ)言類(lèi)型系統(tǒng)的類(lèi)型(無(wú)類(lèi)型 or 弱類(lèi)型 or 強(qiáng)制類(lèi)型 or 偽強(qiáng)類(lèi)型 or 強(qiáng)類(lèi)型),以及為什么是該類(lèi)型?,計(jì)算對(duì)象的表示—值頭等程序?qū)ο罂沙霈F(xiàn)在表達(dá)式中并求值可作函數(shù)返回值可單獨(dú)存儲(chǔ) 可以構(gòu)成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)可作函數(shù)參數(shù),R語(yǔ)言中的值數(shù)據(jù)類(lèi)型:(邏輯型、數(shù)值型、字符型、復(fù)數(shù)型)常量、變

2、量;數(shù)據(jù)結(jié)構(gòu):向量、因子、矩陣、數(shù)據(jù)框、多維數(shù)組、列表、時(shí)間序列;函數(shù)抽象(函數(shù)名);對(duì)象(包括類(lèi)對(duì)象);,都是頭等程序?qū)ο?R語(yǔ)言中的非頭等程序?qū)ο?Python語(yǔ)言中的值基本數(shù)據(jù)類(lèi)型:字符串,整數(shù),浮點(diǎn)數(shù),虛數(shù),布爾型;數(shù)據(jù)結(jié)構(gòu):列表、元組、字典、集合、文件;函數(shù)抽象(函數(shù)名);類(lèi)對(duì)象,都是頭等程序?qū)ο?Python語(yǔ)言中的非頭等程序?qū)ο?計(jì)算對(duì)象的表示—類(lèi)型靜態(tài)與動(dòng)態(tài) 靜

3、動(dòng) 變量 有類(lèi)型 無(wú)類(lèi)型 動(dòng)態(tài)簡(jiǎn)潔、靈活 參數(shù) 有類(lèi)型 無(wú)類(lèi)型 靜態(tài)清晰、死板 值 有類(lèi)型 有類(lèi)型弱/強(qiáng)類(lèi)型無(wú)類(lèi)型 LISP , Smalltalk弱類(lèi)型 變量有類(lèi)型。類(lèi)型兼容性大, 系統(tǒng)不作檢查強(qiáng)制類(lèi)型 隱式類(lèi)型強(qiáng)制(轉(zhuǎn)換),自動(dòng)截尾, 補(bǔ)零。顯式 類(lèi)型強(qiáng)制 PL/1偽強(qiáng)類(lèi)型 靜態(tài)均有類(lèi)型且作檢查,由于不嚴(yán),導(dǎo)出等價(jià)準(zhǔn)則 Pascal強(qiáng)

4、類(lèi)型 類(lèi)型有嚴(yán)格定義, 均作檢查 Ada,計(jì)算對(duì)象的表示—類(lèi)型R語(yǔ)言類(lèi)型系統(tǒng)的類(lèi)型動(dòng)態(tài)類(lèi)型、強(qiáng)類(lèi)型Python語(yǔ)言類(lèi)型系統(tǒng)的類(lèi)型動(dòng)態(tài)類(lèi)型、強(qiáng)類(lèi)型,,,,,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)請(qǐng)給出R語(yǔ)言和Python語(yǔ)言中哪些值是可存儲(chǔ)值,哪些值是不可存儲(chǔ)值?請(qǐng)給出R語(yǔ)言和Python語(yǔ)言中的存儲(chǔ)模型和存儲(chǔ)管理機(jī)制。,第一次課后作業(yè),計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)可存儲(chǔ)值Storable:指最小的可直接訪問(wèn)的可存儲(chǔ)單元中的值。Pas

5、cal可存儲(chǔ)值:集合不選擇更新某一元素是可存儲(chǔ)值;Pascal, C, Ada數(shù)組可選擇更新,不是可存儲(chǔ)值。,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的可存儲(chǔ)值和不可存儲(chǔ)值可存儲(chǔ)值(邏輯型、數(shù)值型、字符型、復(fù)數(shù)型)常量、變量;向量中的元素、因子中的元素、矩陣中的元素、數(shù)據(jù)框中的元素、多維數(shù)組中的元素、列表中的元素、時(shí)間序列中的元素;不可存儲(chǔ)值向量、因子、矩陣、數(shù)據(jù)框、多維數(shù)組、列表、時(shí)間序列;,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言

6、中的可存儲(chǔ)值和不可存儲(chǔ)值可存儲(chǔ)值字符串,整數(shù),浮點(diǎn)數(shù),虛數(shù),布爾型;列表中的元素、元組、字典中的元素、集合中的元素、文件中的元素;不可存儲(chǔ)值列表、元組中的元素、字典、集合、文件;,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)存儲(chǔ)模型,分為以下三種:靜態(tài)存儲(chǔ)模型動(dòng)態(tài)存儲(chǔ)模型堆存儲(chǔ)棧存儲(chǔ),計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的存儲(chǔ)模型靜態(tài)存儲(chǔ)模型所有語(yǔ)言的全局變量都是靜態(tài)對(duì)象;在R語(yǔ)言中:使用”<<-”運(yùn)算符進(jìn)行賦值的都是全局變

7、量;另外,在函數(shù)外聲明的變量也是全局變量;,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的存儲(chǔ)模型動(dòng)態(tài)存儲(chǔ)模型Everything is R lives in an environment. An environment, like everything else in R is an object. Objects hold stuff. Environments are specialized, they can only hold tw

8、o things:A frame This is just a collection of named objects. The environment’s owner aka the enclosing environment. This is just a reference to another environment.,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的存儲(chǔ)模型,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的存儲(chǔ)模型Environme

9、nt basics,Environments,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)R語(yǔ)言中的存儲(chǔ)管理機(jī)制R中的對(duì)象在內(nèi)存中存于兩種不同的地方:一種是堆內(nèi)存(heap),每個(gè)大小為8字節(jié),新來(lái)一個(gè)對(duì)象就會(huì)申請(qǐng)一塊空間,把值全部存在這里,和C里面的堆內(nèi)存很像。第二種是地址對(duì)(cons cells),和LISP里的cons cells道理一樣,主要用來(lái)存儲(chǔ)地址信息,最小單元一般在32位系統(tǒng)中是28字節(jié)、64位系統(tǒng)中是56字節(jié)。,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)

10、Python語(yǔ)言中的存儲(chǔ)模型靜態(tài)存儲(chǔ)模型所有語(yǔ)言的全局變量都是靜態(tài)對(duì)象;在Python語(yǔ)言中:使用global聲明全局變量; 用同樣的global語(yǔ)句可以指定多個(gè)全局變量,比如: global x, y, z。,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)模型:動(dòng)態(tài)存儲(chǔ)模型Stack — variablesHeap — data structures,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制引用計(jì)數(shù)垃圾

11、回收內(nèi)存池機(jī)制,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制:引用計(jì)數(shù)有兩種存儲(chǔ)方式,按值傳遞和按址傳遞:一種是存儲(chǔ)在stack;一種是存儲(chǔ)在heap上;在python中只有按址傳遞,都存儲(chǔ)在heap上;在Python中,每個(gè)對(duì)象都有存有指向該對(duì)象的引用總數(shù),即引用計(jì)數(shù)(reference count)。,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制:垃圾回收Python 支持兩種內(nèi)存回收:一種是引用

12、計(jì)數(shù);另一種是gc。Python默認(rèn)采用引用計(jì)數(shù)來(lái)管理對(duì)象的內(nèi)存回收。當(dāng)引用計(jì)數(shù)為0時(shí),將立即回收該對(duì)象內(nèi)存,要么將對(duì)應(yīng)的block標(biāo)記為空閑,要么返還給操作系統(tǒng)。垃圾回收時(shí),Python不能進(jìn)行其它的任務(wù)。,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制:內(nèi)存池機(jī)制Python的內(nèi)存機(jī)制以金字塔行,-1,-2層主要有操作系統(tǒng)進(jìn)行操作,第0層是C中的malloc,free等內(nèi)存分配和釋放函數(shù)進(jìn)行操作;第1層和第2層是

13、內(nèi)存池,有Python的接口函數(shù)PyMem_Malloc函數(shù)實(shí)現(xiàn),當(dāng)對(duì)象小于256K時(shí)有該層直接分配內(nèi)存;第3層是最上層,也就是我們對(duì)Python對(duì)象的直接操作;,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制:內(nèi)存池機(jī)制經(jīng)由內(nèi)存池登記的內(nèi)存到最后還是會(huì)回收到內(nèi)存池,并不會(huì)調(diào)用 C 的 free 釋放掉,以便下次使用。對(duì)于簡(jiǎn)單的Python對(duì)象,例如數(shù)值、字符串,元組采用的是復(fù)制的方式是深拷貝;也就是說(shuō)當(dāng)將另一個(gè)變量B賦

14、值給變量A時(shí),雖然A和B的內(nèi)存空間仍然相同,但當(dāng)A的值發(fā)生變化時(shí),會(huì)重新給A分配空間,A和B的地址變得不再相同;,計(jì)算對(duì)象的實(shí)現(xiàn)—存儲(chǔ)Python語(yǔ)言中的存儲(chǔ)管理機(jī)制,,,,計(jì)算對(duì)象的連接—束定請(qǐng)給出R語(yǔ)言和Python語(yǔ)言中采用的束定機(jī)制和作用域規(guī)則。,第一次課后作業(yè),計(jì)算對(duì)象的連接—束定R語(yǔ)言采用的束定機(jī)制和作用域規(guī)則束定機(jī)制:無(wú)類(lèi)型語(yǔ)言的束定機(jī)制一個(gè)變量名可以完全動(dòng)態(tài)地束定到任何類(lèi)型的值或操作集上。,計(jì)算對(duì)象的連接—束定

15、R語(yǔ)言采用的束定機(jī)制和作用域規(guī)則作用域規(guī)則:詞法作用域,采用詞法作用域的變量叫詞法變量。詞法變量有一個(gè)在編譯時(shí)靜態(tài)確定的作用域。詞法變量的作用域可以是一個(gè)函數(shù)或一段代碼,該變量在這段代碼區(qū)域內(nèi)可見(jiàn)(visibility);在這段區(qū)域以外該變量不可見(jiàn)(或無(wú)法訪問(wèn))。,計(jì)算對(duì)象的連接—束定動(dòng)態(tài)作用域規(guī)則在采用動(dòng)態(tài)作用域的語(yǔ)言里,變量與值的綁定是依賴(lài)于程序執(zhí)行流程的,它是選取在運(yùn)行的過(guò)程中所遇到的最近綁定。,,,2,,計(jì)算對(duì)象的連接

16、—束定Python語(yǔ)言采用的束定機(jī)制和作用域規(guī)則束定機(jī)制:無(wú)類(lèi)型語(yǔ)言的束定機(jī)制一個(gè)變量名可以完全動(dòng)態(tài)地束定到任何類(lèi)型的值或操作集上。,,計(jì)算對(duì)象的連接—束定Python語(yǔ)言采用的束定機(jī)制和作用域規(guī)則作用域規(guī)則:詞法作用域,采用詞法作用域的變量叫詞法變量。詞法變量有一個(gè)在編譯時(shí)靜態(tài)確定的作用域。詞法變量的作用域可以是一個(gè)函數(shù)或一段代碼,該變量在這段代碼區(qū)域內(nèi)可見(jiàn)(visibility);在這段區(qū)域以外該變量不可見(jiàn)(或無(wú)法訪問(wèn))

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論