陳 放
(安徽六安技師學(xué)院 安徽 六安 237010)
Python 是一種高級(jí)編程語(yǔ)言,由于其具有強(qiáng)大的解釋功能,因此常被應(yīng)用于一些大型、復(fù)雜的軟件開發(fā)工作中。Python 的解釋器(interpretable)是一種完全不依賴于運(yùn)行環(huán)境和程序的解釋器程序。 Python 解釋器會(huì)對(duì)所有的代碼進(jìn)行解釋, 然后將其轉(zhuǎn)化為機(jī)器語(yǔ)言(machine language)再進(jìn)行執(zhí)行。 在Python 解釋器的運(yùn)行過(guò)程中,它會(huì)調(diào)用內(nèi)置于庫(kù)函數(shù)中的相關(guān)功能函數(shù),同時(shí)也會(huì)調(diào)用其他支持Python 解釋器的函數(shù)。 與C 語(yǔ)言相比,Python解釋器通過(guò)一個(gè)簡(jiǎn)單的代碼塊就能將數(shù)據(jù)存儲(chǔ)到內(nèi)存中,這也是Python 與C 語(yǔ)言最大的區(qū)別之一。 除此之外,Python 解釋器會(huì)根據(jù)不同數(shù)據(jù)類型來(lái)選擇使用哪些數(shù)據(jù)類型進(jìn)行操作。 Python 中可以將整數(shù)存儲(chǔ)為data 對(duì)象,也可以將字符串存儲(chǔ)為string 對(duì)象。 與C 語(yǔ)言相比,Python在數(shù)據(jù)存儲(chǔ)方面具有更多的優(yōu)勢(shì)和特點(diǎn),本文通過(guò)實(shí)例具體了解Python 語(yǔ)言在數(shù)據(jù)存儲(chǔ)方面的應(yīng)用情況。
在進(jìn)行數(shù)據(jù)存儲(chǔ)的時(shí)候,選擇數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)類型是非常重要的,在Python 語(yǔ)言與C 語(yǔ)言中都有一些基本數(shù)據(jù)類型,分別是int、double、void、string 等。 這些基本數(shù)據(jù)類型能夠滿足大多數(shù)編程需求,這就需要根據(jù)實(shí)際情況來(lái)進(jìn)行分析。 在進(jìn)行字符型數(shù)據(jù)存儲(chǔ)的時(shí)候,一般是采用字符串這種數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行存儲(chǔ)的,字符串是由字母、數(shù)字、下劃線以及標(biāo)點(diǎn)符號(hào)等組成的。 字符型數(shù)據(jù)最大的特點(diǎn)就是占用空間比較小,而且在存儲(chǔ)過(guò)程中只需要用到一個(gè)變量即可,對(duì)存儲(chǔ)空間的需求比較小。 對(duì)于字符型數(shù)據(jù)還可以使用不同的存儲(chǔ)方式來(lái)進(jìn)行存儲(chǔ),比如可以使用列表、字符串以及字符串字典等。 在進(jìn)行列表數(shù)據(jù)存儲(chǔ)的時(shí)候,可以使用循環(huán)以及條件語(yǔ)句等;在進(jìn)行字符型數(shù)據(jù)存儲(chǔ)的時(shí)候,可以使用切片、函數(shù)或者其他操作來(lái)進(jìn)行存儲(chǔ)。在進(jìn)行列表數(shù)據(jù)存儲(chǔ)時(shí)還需要注意兩個(gè)問(wèn)題:一是對(duì)于列表中的元素應(yīng)該按照從左到右的順序進(jìn)行排列;二是對(duì)于列表中元素如果有重復(fù)出現(xiàn)時(shí)需要進(jìn)行合并處理。 在Python 語(yǔ)言與C 語(yǔ)言中都有一些基本數(shù)據(jù)類型,比如int、double 以及void 等。 這三種基本數(shù)據(jù)類型都是通過(guò)整數(shù)類型來(lái)進(jìn)行存儲(chǔ)的,其中int 是使用范圍最廣,也是最常見的一種基本數(shù)據(jù)類型,在進(jìn)行Python 語(yǔ)言與C 語(yǔ)言編程時(shí)一般都會(huì)涉及三種基本數(shù)據(jù)類型。 而void 和visual 是兩種特殊類型,這兩種類型是用來(lái)表示不能轉(zhuǎn)換成整數(shù)或者字符串的操作。 在Python 語(yǔ)言與C 語(yǔ)言中還有一些特殊類型,比如字符型、浮點(diǎn)型和實(shí)數(shù)型等等。 在使用Python 語(yǔ)言與C 語(yǔ)言編程時(shí)需要注意兩點(diǎn):一是對(duì)于不同的基本數(shù)據(jù)類型應(yīng)該選擇相應(yīng)的存儲(chǔ)結(jié)構(gòu);二是對(duì)于不同的基本數(shù)據(jù)類型應(yīng)該選擇相應(yīng)的函數(shù)。 通過(guò)以上分析可以看出,在使用Python 語(yǔ)言與C 語(yǔ)言進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)一般都會(huì)涉及兩種基本數(shù)據(jù)類型[1]。
在C 語(yǔ)言中,對(duì)字符型數(shù)據(jù)的存儲(chǔ)方式主要是采用字符數(shù)組,并使用指針來(lái)對(duì)字符數(shù)組進(jìn)行訪問(wèn)和存儲(chǔ)。 在C 語(yǔ)言中字符數(shù)組的存儲(chǔ)方式是一種靜態(tài)存儲(chǔ)方式,因此在進(jìn)行數(shù)據(jù)存儲(chǔ)的時(shí)候,只需要在C 語(yǔ)言的基礎(chǔ)上增加一個(gè)指針變量即可。 因此在使用C 語(yǔ)言進(jìn)行編程時(shí),要注意對(duì)指針變量進(jìn)行合理的設(shè)置,否則就會(huì)造成數(shù)據(jù)存儲(chǔ)錯(cuò)誤。 在對(duì)字符數(shù)組進(jìn)行讀取操作時(shí),由于是采用指針變量來(lái)對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)和存儲(chǔ)的,因此對(duì)于讀取一個(gè)字符數(shù)組時(shí),所需要的存儲(chǔ)空間大小僅為8 個(gè)字節(jié)左右。 通過(guò)以上分析可以看出,對(duì)于C 語(yǔ)言中字符數(shù)組的讀取操作,一般只需要使用1 個(gè)指針變量即可完成。 因此在進(jìn)行數(shù)據(jù)存儲(chǔ)的時(shí)候,要根據(jù)實(shí)際情況來(lái)選擇合適的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型,這樣才能有效減少存儲(chǔ)空間和提高編程效率,同時(shí)也要注意對(duì)C 語(yǔ)言中數(shù)據(jù)類型進(jìn)行合理設(shè)置,以避免對(duì)代碼進(jìn)行修改。
整型數(shù)據(jù)是計(jì)算機(jī)內(nèi)存中最基本的數(shù)據(jù)類型之一,整型數(shù)據(jù)可以是一位數(shù)(即數(shù)字)、二位數(shù)(即數(shù)字+1)或三位數(shù)(即數(shù)字-1)。 整型數(shù)據(jù)按其表示的位數(shù)可分為整數(shù)、字符型、小數(shù)和特殊值四類。 在C 語(yǔ)言中,整型數(shù)據(jù)被存儲(chǔ)在只讀內(nèi)存中,而不能被修改或刪除。 C 語(yǔ)言將整數(shù)對(duì)象保存在寄存器中,當(dāng)寄存器已滿時(shí),它就會(huì)被釋放。整數(shù)對(duì)象也可以是字符串或字符數(shù)組,但不能是列表。 在Python 中,整型數(shù)據(jù)由一組數(shù)據(jù)組成,它們的位數(shù)由一個(gè)數(shù)字和一組整數(shù)組成。 Python 的整型數(shù)據(jù)也有四種不同類型:整數(shù)、字符串、列表和元組。 整數(shù)是指在計(jì)算機(jī)上可以表示為一個(gè)數(shù)字或一個(gè)字符的數(shù)據(jù),它們是一組數(shù)字,其中每個(gè)數(shù)字都有一個(gè)整數(shù)值。 對(duì)于整數(shù)類型的數(shù)據(jù),Python 中有兩種不同的存儲(chǔ)方式:int(int [])用一個(gè)列表來(lái)存儲(chǔ)整數(shù)值;使用Python 的“set”函數(shù)可以將列表轉(zhuǎn)換為整數(shù)類型。 Python 中還可以使用其他類型的數(shù)據(jù)(如字符串)來(lái)存儲(chǔ)整數(shù)值或字符數(shù)組,例如處理字符串時(shí),可以將字符串轉(zhuǎn)換為一個(gè)包含兩個(gè)數(shù)字的列表。 在Python 中,字符串和列表都是整型數(shù)據(jù)類型,列表中的每個(gè)元素都有一個(gè)整數(shù)值,而字符串中每個(gè)元素都有一個(gè)整數(shù)值和兩個(gè)小數(shù)。
(1)當(dāng)需要讀取整數(shù)或者浮點(diǎn)數(shù)的時(shí)候,應(yīng)該使用int類型;當(dāng)需要讀取字符串或者字符列表中所有字符的時(shí)候,應(yīng)該使用string 類型。 在進(jìn)行數(shù)據(jù)讀取操作的時(shí)候,如果遇到循環(huán)語(yǔ)句中有空格等特殊字符出現(xiàn)的情況時(shí),就會(huì)出現(xiàn)錯(cuò)誤。
(2)在對(duì)數(shù)據(jù)進(jìn)行排序或者查找等操作時(shí),應(yīng)該按照從小到大、從左到右、從上到下的順序進(jìn)行排序和查找。在進(jìn)行數(shù)據(jù)排序和查找時(shí),如果遇到?jīng)]有索引號(hào)的情況時(shí),會(huì)出現(xiàn)錯(cuò)誤。
(3)在對(duì)數(shù)據(jù)進(jìn)行操作和處理時(shí),應(yīng)該先對(duì)數(shù)據(jù)進(jìn)行初始化再執(zhí)行操作。 在執(zhí)行操作之前需要先設(shè)置好相應(yīng)的變量和參數(shù)。 在對(duì)數(shù)據(jù)進(jìn)行修改時(shí)要確保修改之后會(huì)得到正確答案或者結(jié)果[2]。
(4)在使用Python 語(yǔ)言來(lái)編寫程序時(shí),不應(yīng)該使用全局變量或全局方法來(lái)存儲(chǔ)數(shù)據(jù)。 全局變量是指存放所有變量信息的地方;全局方法是指存放所有函數(shù)參數(shù)信息或者變量初始化信息等信息。 如果要用到全局變量或者全局方法來(lái)存儲(chǔ)數(shù)據(jù)的話,應(yīng)該將其賦值給一個(gè)局部變量或者局部方法中。
在C 語(yǔ)言中,數(shù)據(jù)被存儲(chǔ)在內(nèi)存中,其中數(shù)據(jù)的地址以字節(jié)數(shù)組的形式存儲(chǔ),并通過(guò)指針的方式來(lái)進(jìn)行訪問(wèn)。在Python 中,數(shù)據(jù)的存儲(chǔ)是以字符串的形式進(jìn)行存儲(chǔ),并通過(guò)字符串中包含的校驗(yàn)值來(lái)進(jìn)行驗(yàn)證。 由于C 語(yǔ)言與Python 在數(shù)據(jù)存儲(chǔ)上存在一定的差異,在C 語(yǔ)言中就無(wú)法直接訪問(wèn)內(nèi)存中的數(shù)據(jù),需要先將數(shù)據(jù)從內(nèi)存中讀取出來(lái)后才能對(duì)其進(jìn)行操作。 內(nèi)存中不存在真正意義上的“指針”,而且在內(nèi)存中也不存在指針變量和數(shù)組這兩種基本類型的數(shù)據(jù)結(jié)構(gòu),在C 語(yǔ)言中無(wú)法直接使用指針來(lái)訪問(wèn)內(nèi)存空間。 C 語(yǔ)言還使用了字符串、數(shù)組和字符串類型這三種數(shù)據(jù)存儲(chǔ)方式。 在C 語(yǔ)言中,所有的數(shù)據(jù)都被存儲(chǔ)到字符串類型和數(shù)組類型這兩種基本數(shù)據(jù)類型中,其中字符串是一種基本數(shù)據(jù)類型,可以用于表示任意長(zhǎng)度的字符;數(shù)組是一種基本數(shù)據(jù)類型,可以用于表示任意數(shù)量的數(shù)據(jù);而字符串則是一種特殊類型,主要用于表示任何長(zhǎng)度的字符。 在C 語(yǔ)言中使用字符串和數(shù)組類型這兩種基本存儲(chǔ)方式時(shí),都會(huì)使用指針來(lái)訪問(wèn)內(nèi)存空間。 首先是通過(guò)指針來(lái)進(jìn)行訪問(wèn)內(nèi)存空間中的內(nèi)容,其次是通過(guò)數(shù)組類型來(lái)訪問(wèn)內(nèi)存空間中的內(nèi)容[3-4]。
在C 語(yǔ)言中,字符型數(shù)據(jù)類型以“\”為前綴,例如:字符型變量的存儲(chǔ)方式為“ $”。 在C 語(yǔ)言中,字符型數(shù)據(jù)類型可以被分為以下兩類:字符型變量和實(shí)數(shù)型變量。 所謂字符型變量,是指能夠通過(guò)其前綴來(lái)識(shí)別的數(shù)據(jù)類型,例如:一個(gè)字符串只能用字符型前綴來(lái)識(shí)別。 C 語(yǔ)言中的數(shù)據(jù)類型并不是由一個(gè)或者多個(gè)數(shù)字或布爾值組成的,而是由一個(gè)或多個(gè)實(shí)數(shù)型變量組成的。 因?yàn)閷?shí)數(shù)型變量是可以通過(guò)其后綴來(lái)識(shí)別的,所以在C 語(yǔ)言中把實(shí)數(shù)型變量稱為“string”。 C 語(yǔ)言中的“string”類型是以字符型前綴作為前綴來(lái)進(jìn)行存儲(chǔ)的,當(dāng)一個(gè)字符被用到時(shí),就會(huì)被存儲(chǔ)到string 類型中。 在Python 中,只需要將所需的數(shù)據(jù)類型存儲(chǔ)到一個(gè)或多個(gè)實(shí)數(shù)型變量中即可,當(dāng)要存儲(chǔ)多個(gè)實(shí)數(shù)型變量時(shí),則要用“for”循環(huán)來(lái)對(duì)實(shí)數(shù)型變量進(jìn)行遍歷和更新。 Python 是一種解釋語(yǔ)言,因此它不支持直接訪問(wèn)字符型前綴或?qū)崝?shù)型變量的方法。
在C 語(yǔ)言中,可以對(duì)數(shù)組進(jìn)行排序、獲取數(shù)組長(zhǎng)度、填充等操作。 而在Python 中,同樣可以對(duì)數(shù)組進(jìn)行操作,不過(guò)Python 對(duì)于數(shù)組的操作比C 語(yǔ)言要少得多。 對(duì)于數(shù)組的排序,Python 中使用sorted 函數(shù)進(jìn)行實(shí)現(xiàn),而對(duì)于列表的獲取,Python 同樣使用sorted 函數(shù)進(jìn)行實(shí)現(xiàn)。 由于列表中的元素是按順序存儲(chǔ)的,因此對(duì)列表進(jìn)行操作時(shí),Python 也會(huì)按照順序來(lái)對(duì)列表進(jìn)行讀取和計(jì)算。 需要獲取一個(gè)列表的長(zhǎng)度時(shí),使用sorted 函數(shù)同樣可以進(jìn)行操作。 不過(guò)對(duì)于數(shù)組來(lái)說(shuō),它的數(shù)據(jù)類型和長(zhǎng)度是固定的,因此使用sorted 函數(shù)對(duì)數(shù)組進(jìn)行操作時(shí),只能獲取到一個(gè)固定長(zhǎng)度的數(shù)組。
假設(shè)要在Windows 系統(tǒng)下對(duì)文件進(jìn)行修改,可以通過(guò)Python 語(yǔ)言編寫程序來(lái)對(duì)文件進(jìn)行讀寫操作,具體代碼如下:使用Python 程序來(lái)讀取該變量的值,并通過(guò)read_my_store 函數(shù)將數(shù)據(jù)寫入到內(nèi)存中。 使用validation()函數(shù)來(lái)判斷文件是否已經(jīng)被修改成功。 如果是,則說(shuō)明文件已經(jīng)被成功修改,這時(shí)可以通過(guò)終端窗口調(diào)用exe 程序來(lái)查看修改后的文件內(nèi)容。 在C 語(yǔ)言中,變量是指存放數(shù)據(jù)的地址,通常使用std:: var 和std:: arguments ()來(lái)定義變量。 變量在程序運(yùn)行時(shí)可以進(jìn)行操作,但無(wú)法修改。 例如:在C 語(yǔ)言中,要想修改變量的值,需要使用var 命令;而在Python 中則不可以。 在Python 中,變量是由多個(gè)小寫字母和數(shù)字組成的字符串。 在Python 中,變量的類型分為以下三種。 聲明一個(gè)變量的值:- var-。 其中path 表示方法,可以是任何語(yǔ)法結(jié)構(gòu)(例如字符串)。 如果path不被使用,則聲明的變量將被轉(zhuǎn)換為一個(gè)普通變量[5]。
C 語(yǔ)言中的函數(shù)是一個(gè)相對(duì)概念,指的是一個(gè)可以調(diào)用的函數(shù)。 在C 語(yǔ)言中,一個(gè)函數(shù)可以用來(lái)完成特定的操作,也可以在其他程序中被調(diào)用。 使用函數(shù)時(shí),它實(shí)際上是一個(gè)與其他程序有不同類型的對(duì)象相關(guān)聯(lián)的代碼段,通過(guò)將函數(shù)定義為一個(gè)類,可以使代碼更易于理解。 在Python 中,函數(shù)是可以通過(guò)聲明或?qū)嵗瘉?lái)創(chuàng)建的。Python 中有許多可用于創(chuàng)建函數(shù)的類,每個(gè)類都包含許多基本類型,包括int、double、python 等。 每個(gè)類都有一個(gè)名為“?!钡姆?hào),用于標(biāo)識(shí)其所屬類型。 Python 中的所有類型都可以通過(guò)“?!狈?hào)來(lái)識(shí)別其類型,因此在程序中使用任何類型的數(shù)據(jù)都不會(huì)發(fā)生錯(cuò)誤。 例如:在C 語(yǔ)言中,變量只能用于存儲(chǔ)數(shù)值或字符串等實(shí)數(shù)數(shù)據(jù);而在Python中,變量可以用于存儲(chǔ)任何類型的數(shù)據(jù)。
(1)C 語(yǔ)言的調(diào)用函數(shù)比較簡(jiǎn)單,不需要指定參數(shù)和返回值。 而Python 代碼中,函數(shù)的調(diào)用比較復(fù)雜,需要指定參數(shù)、返回值以及參數(shù)和返回值的類型[6-8]。 (2)C 語(yǔ)言中沒(méi)有指針,而Python 代碼中有指針。 在C 語(yǔ)言代碼中,可以使用指針來(lái)訪問(wèn)變量。 (3)C 語(yǔ)言代碼中不允許傳遞空字符串作為參數(shù)。 (4)C 語(yǔ)言代碼不支持函數(shù)的自動(dòng)預(yù)定義,而Python 代碼則支持自動(dòng)預(yù)定義,可以讓程序更加靈活。 (5)C 語(yǔ)言中不支持內(nèi)置函數(shù)庫(kù)的使用,而Python 代碼中則允許使用內(nèi)置函數(shù)庫(kù)。 (6)C 語(yǔ)言代碼不支持變量的聲明和賦值,而Python 代碼則可以使用聲明和賦值。 (7)C 語(yǔ)言的變量可以被賦值為一個(gè)值,也可以被賦值為一個(gè)整型變量;而Python 變量只能被賦值為一個(gè)整數(shù)或字符串類型的變量,無(wú)法被賦值為一個(gè)整型變量或字符串類型的變量[9]。
綜上所述,不同的數(shù)據(jù)類型可以用不同的算法進(jìn)行處理,而不同的算法可以用不同的數(shù)學(xué)模型來(lái)描述,從而形成了各種不同類型的編程語(yǔ)言。 C 語(yǔ)言通常使用數(shù)組作為數(shù)據(jù)存儲(chǔ)媒介,而Python 則支持更多的數(shù)據(jù)類型,并且提供了更好的數(shù)據(jù)訪問(wèn)接口。 C 語(yǔ)言和Python 都可以用于數(shù)據(jù)存儲(chǔ)。 在選擇編程語(yǔ)言時(shí),需要根據(jù)自己的需求和應(yīng)用場(chǎng)景來(lái)選擇合適的語(yǔ)言。