

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一次課后作業(yè),計算對象的表示—值與類型請給出R語言和Python語言中哪些值是頭等程序對象?為什么?請給出R語言和Python語言類型系統(tǒng)的類型(無類型 or 弱類型 or 強制類型 or 偽強類型 or 強類型),以及為什么是該類型?,計算對象的表示—值頭等程序對象可出現在表達式中并求值可作函數返回值可單獨存儲 可以構成復雜的數據結構可作函數參數,R語言中的值數據類型:(邏輯型、數值型、字符型、復數型)常量、變
2、量;數據結構:向量、因子、矩陣、數據框、多維數組、列表、時間序列;函數抽象(函數名);對象(包括類對象);,都是頭等程序對象,R語言中的非頭等程序對象,Python語言中的值基本數據類型:字符串,整數,浮點數,虛數,布爾型;數據結構:列表、元組、字典、集合、文件;函數抽象(函數名);類對象,都是頭等程序對象,Python語言中的非頭等程序對象,計算對象的表示—類型靜態(tài)與動態(tài) 靜
3、動 變量 有類型 無類型 動態(tài)簡潔、靈活 參數 有類型 無類型 靜態(tài)清晰、死板 值 有類型 有類型弱/強類型無類型 LISP , Smalltalk弱類型 變量有類型。類型兼容性大, 系統(tǒng)不作檢查強制類型 隱式類型強制(轉換),自動截尾, 補零。顯式 類型強制 PL/1偽強類型 靜態(tài)均有類型且作檢查,由于不嚴,導出等價準則 Pascal強
4、類型 類型有嚴格定義, 均作檢查 Ada,計算對象的表示—類型R語言類型系統(tǒng)的類型動態(tài)類型、強類型Python語言類型系統(tǒng)的類型動態(tài)類型、強類型,,,,,計算對象的實現—存儲請給出R語言和Python語言中哪些值是可存儲值,哪些值是不可存儲值?請給出R語言和Python語言中的存儲模型和存儲管理機制。,第一次課后作業(yè),計算對象的實現—存儲可存儲值Storable:指最小的可直接訪問的可存儲單元中的值。Pas
5、cal可存儲值:集合不選擇更新某一元素是可存儲值;Pascal, C, Ada數組可選擇更新,不是可存儲值。,計算對象的實現—存儲R語言中的可存儲值和不可存儲值可存儲值(邏輯型、數值型、字符型、復數型)常量、變量;向量中的元素、因子中的元素、矩陣中的元素、數據框中的元素、多維數組中的元素、列表中的元素、時間序列中的元素;不可存儲值向量、因子、矩陣、數據框、多維數組、列表、時間序列;,計算對象的實現—存儲Python語言
6、中的可存儲值和不可存儲值可存儲值字符串,整數,浮點數,虛數,布爾型;列表中的元素、元組、字典中的元素、集合中的元素、文件中的元素;不可存儲值列表、元組中的元素、字典、集合、文件;,計算對象的實現—存儲存儲模型,分為以下三種:靜態(tài)存儲模型動態(tài)存儲模型堆存儲棧存儲,計算對象的實現—存儲R語言中的存儲模型靜態(tài)存儲模型所有語言的全局變量都是靜態(tài)對象;在R語言中:使用”<<-”運算符進行賦值的都是全局變
7、量;另外,在函數外聲明的變量也是全局變量;,計算對象的實現—存儲R語言中的存儲模型動態(tài)存儲模型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.,計算對象的實現—存儲R語言中的存儲模型,計算對象的實現—存儲R語言中的存儲模型Environme
9、nt basics,Environments,計算對象的實現—存儲R語言中的存儲管理機制R中的對象在內存中存于兩種不同的地方:一種是堆內存(heap),每個大小為8字節(jié),新來一個對象就會申請一塊空間,把值全部存在這里,和C里面的堆內存很像。第二種是地址對(cons cells),和LISP里的cons cells道理一樣,主要用來存儲地址信息,最小單元一般在32位系統(tǒng)中是28字節(jié)、64位系統(tǒng)中是56字節(jié)。,計算對象的實現—存儲
10、Python語言中的存儲模型靜態(tài)存儲模型所有語言的全局變量都是靜態(tài)對象;在Python語言中:使用global聲明全局變量; 用同樣的global語句可以指定多個全局變量,比如: global x, y, z。,計算對象的實現—存儲Python語言中的存儲模型:動態(tài)存儲模型Stack — variablesHeap — data structures,計算對象的實現—存儲Python語言中的存儲管理機制引用計數垃圾
11、回收內存池機制,計算對象的實現—存儲Python語言中的存儲管理機制:引用計數有兩種存儲方式,按值傳遞和按址傳遞:一種是存儲在stack;一種是存儲在heap上;在python中只有按址傳遞,都存儲在heap上;在Python中,每個對象都有存有指向該對象的引用總數,即引用計數(reference count)。,計算對象的實現—存儲Python語言中的存儲管理機制:垃圾回收Python 支持兩種內存回收:一種是引用
12、計數;另一種是gc。Python默認采用引用計數來管理對象的內存回收。當引用計數為0時,將立即回收該對象內存,要么將對應的block標記為空閑,要么返還給操作系統(tǒng)。垃圾回收時,Python不能進行其它的任務。,計算對象的實現—存儲Python語言中的存儲管理機制:內存池機制Python的內存機制以金字塔行,-1,-2層主要有操作系統(tǒng)進行操作,第0層是C中的malloc,free等內存分配和釋放函數進行操作;第1層和第2層是
13、內存池,有Python的接口函數PyMem_Malloc函數實現,當對象小于256K時有該層直接分配內存;第3層是最上層,也就是我們對Python對象的直接操作;,計算對象的實現—存儲Python語言中的存儲管理機制:內存池機制經由內存池登記的內存到最后還是會回收到內存池,并不會調用 C 的 free 釋放掉,以便下次使用。對于簡單的Python對象,例如數值、字符串,元組采用的是復制的方式是深拷貝;也就是說當將另一個變量B賦
14、值給變量A時,雖然A和B的內存空間仍然相同,但當A的值發(fā)生變化時,會重新給A分配空間,A和B的地址變得不再相同;,計算對象的實現—存儲Python語言中的存儲管理機制,,,,計算對象的連接—束定請給出R語言和Python語言中采用的束定機制和作用域規(guī)則。,第一次課后作業(yè),計算對象的連接—束定R語言采用的束定機制和作用域規(guī)則束定機制:無類型語言的束定機制一個變量名可以完全動態(tài)地束定到任何類型的值或操作集上。,計算對象的連接—束定
15、R語言采用的束定機制和作用域規(guī)則作用域規(guī)則:詞法作用域,采用詞法作用域的變量叫詞法變量。詞法變量有一個在編譯時靜態(tài)確定的作用域。詞法變量的作用域可以是一個函數或一段代碼,該變量在這段代碼區(qū)域內可見(visibility);在這段區(qū)域以外該變量不可見(或無法訪問)。,計算對象的連接—束定動態(tài)作用域規(guī)則在采用動態(tài)作用域的語言里,變量與值的綁定是依賴于程序執(zhí)行流程的,它是選取在運行的過程中所遇到的最近綁定。,,,2,,計算對象的連接
16、—束定Python語言采用的束定機制和作用域規(guī)則束定機制:無類型語言的束定機制一個變量名可以完全動態(tài)地束定到任何類型的值或操作集上。,,計算對象的連接—束定Python語言采用的束定機制和作用域規(guī)則作用域規(guī)則:詞法作用域,采用詞法作用域的變量叫詞法變量。詞法變量有一個在編譯時靜態(tài)確定的作用域。詞法變量的作用域可以是一個函數或一段代碼,該變量在這段代碼區(qū)域內可見(visibility);在這段區(qū)域以外該變量不可見(或無法訪問)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論