高敬瑜
摘 要:大學(xué)大多同學(xué)覺(jué)得學(xué)了編程語(yǔ)言后應(yīng)該能夠編寫程序,可在進(jìn)行小項(xiàng)目開(kāi)發(fā)時(shí)還是無(wú)從下手,總覺(jué)得是老師講解沒(méi)有到位并失去對(duì)編程學(xué)習(xí)的興趣。這篇文章提出針對(duì)學(xué)習(xí)編程的學(xué)習(xí)過(guò)程和步驟和應(yīng)該注意的事項(xiàng)。
關(guān)鍵詞:編程語(yǔ)言;生命周期;程序設(shè)計(jì)
一、對(duì)編程語(yǔ)言的初步認(rèn)識(shí)
編程是用計(jì)算機(jī)語(yǔ)言組合成一篇具有設(shè)定功能和計(jì)算機(jī)能夠識(shí)別并執(zhí)行的命令集合,寫作文是以某種文體表達(dá)一定內(nèi)容的自然語(yǔ)言的組合。編程和寫作文在思維方式上有某種程度的相似性。寫作文之前我們必須學(xué)習(xí)預(yù)備知識(shí),包括字詞、語(yǔ)法、造句、邏輯、修辭。學(xué)完后也不能保證直接寫出有一定質(zhì)量的作文,首先閱讀某種文體的范文,然后嘗試著模仿、總結(jié)。編程首先要學(xué)習(xí)編程語(yǔ)言的數(shù)據(jù)類型、函數(shù)、語(yǔ)法、句型,學(xué)完之后也不能直接編寫有實(shí)用功能的程序,需要閱讀別人的程序,嘗試模仿,逐步提高。
二、以Python語(yǔ)言為例來(lái)討論編程語(yǔ)言學(xué)習(xí)
(一)數(shù)據(jù)類型新穎
學(xué)過(guò)Python語(yǔ)言的老師和同學(xué)都知道Python語(yǔ)言出現(xiàn)了像C語(yǔ)言、JAVA語(yǔ)言、PHP語(yǔ)言都不曾出現(xiàn)的數(shù)據(jù)類型,除數(shù)值計(jì)算類型中浮點(diǎn)類型、整型類型、布爾類型之外,新增加了復(fù)數(shù)類型、TUPLE類型、LIST類型、DICT類型和SET類型,增加的數(shù)據(jù)類型豐富了語(yǔ)法的內(nèi)容,也同時(shí)增加了語(yǔ)法的靈活性。雖然在編程時(shí)降低了命令和函數(shù)的使用數(shù)量,但也增加了初學(xué)者學(xué)習(xí)編程語(yǔ)言的難度和困惑。那種認(rèn)為Python語(yǔ)言是一種簡(jiǎn)單易學(xué)的語(yǔ)言的觀念是錯(cuò)誤的,或者說(shuō)至少是不準(zhǔn)確的。因?yàn)楣δ軓?qiáng)大和語(yǔ)法靈活是初次學(xué)習(xí)Python語(yǔ)言者感到不易掌握的原因。
(二)語(yǔ)法靈活造成初學(xué)者理解困惑
我們以元組和列表為例討論P(yáng)ython語(yǔ)言理解的困惑。例如:tuple001=(123,'qwe','123',(345,"qaz",'哈哈'),[567″,qaz″,666]),我們知道元組中的元素是不可更換的,即不可改變,元組tuple001中的第0個(gè)、第1個(gè)、第2個(gè)、第3個(gè)元素是不可改變的,可第4個(gè)元素又是列表構(gòu)成的,列表是可以改變的,所以元組tuple001中第4個(gè)元素中的二維元素是可以改變的。這也是元組數(shù)據(jù)類型的靈活性之一。又例如,格式化輸出函數(shù) print(f′輸出格式{variate} ′,end=′′),f 后邊的括號(hào)內(nèi)的內(nèi)容應(yīng)該是原樣輸出,但是其中的大括號(hào)內(nèi)若果是變量,函數(shù)會(huì)輸出變量的值。像這樣的情況,我們會(huì)遇到很多,如果按照原來(lái)的定義理解,那覺(jué)得是不可思議。正是這種破壞定義的特殊性用法增加了語(yǔ)言語(yǔ)法的靈活性。
(三)數(shù)據(jù)類型之間轉(zhuǎn)化的多變性
在python語(yǔ)言中,數(shù)據(jù)類型不但有其新穎性,而且類型之間的轉(zhuǎn)化也是比較復(fù)雜的,這種復(fù)雜性更增添了python語(yǔ)言語(yǔ)言語(yǔ)法的靈活性,基本上所有的python語(yǔ)言書籍中都談到了數(shù)據(jù)類型之間的轉(zhuǎn)化,但都是枚舉的方法,且大同小異,完整的轉(zhuǎn)化說(shuō)明也不能從書籍中總結(jié)出來(lái),本人以python語(yǔ)言3.7版本針對(duì)類型各自的屬性及其轉(zhuǎn)化的各種情況盡可能的通過(guò)函數(shù)嘗試總結(jié)出以下的表格,也許有遺漏情形和錯(cuò)誤之處,僅供參考。
數(shù)值類不可變(內(nèi)存中數(shù)據(jù)),int,bool,float,complex;文件和生成器不是序列。
(四)生成器和迭代器是重要概念
上述三行程序是在遍歷中將列表中的元素加1,執(zhí)行過(guò)程中enumerate()函數(shù)產(chǎn)生列表下標(biāo)和對(duì)應(yīng)的元素(值),并返回一個(gè)迭代器。利用迭代器,我們可以直接創(chuàng)建一個(gè)大的列表,但是占用了大量?jī)?nèi)存,假設(shè)在一個(gè)500萬(wàn)個(gè)元素的列表中,我們只是訪問(wèn)了其中的幾個(gè)元素,等于白白浪費(fèi)掉了大量?jī)?nèi)存。為避免這樣的現(xiàn)象,我們要了解生成器。生成器是一個(gè)非常有用的特殊的程序,可以被用作控制循環(huán)的迭代行為,python語(yǔ)言中生成器是迭代器的一種,它利用用yield返回值函數(shù),每次當(dāng)調(diào)用yield會(huì)暫停,但可以使用next()函數(shù)和send()函數(shù)恢復(fù)生成器。生成器類似于返回值為數(shù)組的一個(gè)函數(shù),這個(gè)函數(shù)可以接受參數(shù)和被調(diào)用,但不是一次性返回包括所有數(shù)值的數(shù)組,生成器一次只能產(chǎn)生一個(gè)值,這樣內(nèi)存大大減小,而且允許調(diào)用函數(shù)可以很快的處理前幾個(gè)返回值,因此生成器看起來(lái)像是一個(gè)函數(shù),但是表現(xiàn)得卻像是迭代器。要?jiǎng)?chuàng)建一個(gè)generator,有很多種方法,第一種方法很簡(jiǎn)單,只有把一個(gè)列表生成式的[]中括號(hào)改為()小括號(hào),就創(chuàng)建一個(gè)generator
三、總結(jié)
以上是學(xué)習(xí)中關(guān)于python語(yǔ)言基礎(chǔ)知識(shí)的體會(huì)總結(jié),希望對(duì)大家有所幫助。
參考文獻(xiàn):
[1]呂云翔.python基礎(chǔ)教程[M].人民郵電出版社,2018.1.