您好,登錄后才能下訂單哦!
防偽碼:忘情公子著
一、python介紹
python是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。
python語法簡潔明晰,特色之一是強制用空白符作為語句縮進。
python具有豐富和強大的庫,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。此段引自百度百科。
python有很多的模塊能夠?qū)崿F(xiàn)各種功能,在編程時能夠通過調(diào)用相應(yīng)的模塊從而減少代碼量
二、編程語言介紹
在開始學(xué)習(xí)python前讓我們先來說說編程語言,因為python語言僅僅只是編程語言中的一種而已,了解了編程語言能讓我們學(xué)習(xí)python更加容易。
那么什么是編程語言?編程語言是用來干什么的?
在說這個之前讓我們先來想想,人類創(chuàng)造出計算機是為什么?人類創(chuàng)造出計算機是為了更好的解決人類所不能或很難解決的問題。由此,我們可以簡單的將人類需要解決的問題稱之為問題空間(或用戶空間),而將計算機稱之為解空間(解決問題)。我們可以將解空間中的解決問題的能力抽象映射為用戶空間中的解決方案。
編程語言是將計算機解決問題的能力給抽象出來的結(jié)果,將計算機解決問題的能力用人類所能理解的方式來描述,這就是編程語言。
有了編程語言以后,人類可以更方便的進行編程,但是新問題又來了,編程語言是偏向于人類的,也就是說編程語言是以人類所能理解的語言來描述的,通過編程語言來編寫的程序,計算機是無法理解、無法直接在計算機內(nèi)核中執(zhí)行的,所以此時需要一個橋梁來對接人類與計算機,把偏向于人類的編程語言編譯或者說翻譯成計算機所能識別的語言,這就是編譯器(或解釋器)的由來。
說到編譯器(解釋器)就不得不說下編程語言的分類,編程語言以是否編譯為分割可以簡單的分為兩類:靜態(tài)語言和動態(tài)語言。靜態(tài)語言在執(zhí)行前必須先通過編譯器從頭到尾編譯一次,然后將編譯后的結(jié)果拿到cpu中運行;而動態(tài)語言則可以以類似同聲傳譯的方式將代碼直接通過解釋器解釋之后在cpu中運行,也就是給解釋器一條語句它解釋一下立馬在cpu中執(zhí)行,再解釋一條再執(zhí)行,而不必從頭到尾編譯一次后再在cpu中執(zhí)行。所以可以這樣總結(jié)一下,在靜態(tài)語言中,人類與計算機之間的語言橋梁叫做編譯器,而在動態(tài)語言中,則稱之為解釋器。
編程語言以與用戶的距離來分割還可以分為低級語言和高級語言兩種,所謂低級語言就是更偏向于計算機的語言,如微碼編程語言,而高級語言則是更偏向于用戶的語言,python就是一種高級語言。低級語言與高級語言的區(qū)別是高級語言更接近于用戶,而不是指在性能上的高下,也不是指優(yōu)越性上的高下。
三、python的應(yīng)用領(lǐng)域
1、當(dāng)做腳本語言來實現(xiàn)系統(tǒng)自動化管理;
2、當(dāng)做控制語言:調(diào)用其它語言的接口來實現(xiàn)應(yīng)用程序的開發(fā);
3、有很多外部框架可以快速實現(xiàn)某些特定類型的應(yīng)用程序的開發(fā)
Web網(wǎng)站框架:django、Tornado(輕量級、異步)、Flask(微型)、Web.py(簡單)等
數(shù)據(jù)采集:有好用的http庫,比如requests、urllib2等
科學(xué)計算:常用的模塊有Numpy、SciPy等
大數(shù)據(jù)分析:常用的模塊有Numpy、Pandas等
四、python程序的執(zhí)行過程
python的源代碼表現(xiàn)為.py文件。
python程序在第一次執(zhí)行時,自動通過Compiler模塊將源代碼編譯成.pyc后綴的bytecode(字節(jié)碼)文件,之后由python解釋器(PVM,Interpreter)讀取bytecode文件然后在處理器(processor)中運行。
pyc是一種二進制文件,是由py文件經(jīng)過編譯后生成的文件,是一種bytecode,py文件變成pyc文件后,加載的速度有所提高,而且pyc是一種跨平臺的字節(jié)碼,是由python的虛擬機(PVM)來執(zhí)行的。pyc的內(nèi)容是跟python的版本相關(guān)的,不同版本編譯后的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的python是無法執(zhí)行的。
那么為什么需要pyc文件呢?
除了能夠提高加載速度外,為了防止源碼泄漏,是很有必要將源代碼編譯成pyc文件的,因為py文件可以直接看到源碼,而很多商業(yè)軟件是不可能公開源碼的。
需要注意的是,python自動通過Compiler模塊編譯源代碼之后的.pyc文件在程序執(zhí)行完以后會自動刪除。如果需要手動生成.pyc文件,可以這樣操作:
[root@localhost test]# ls 1.py 2.py 1.py 2.py [root@localhost test]# cat 2.py import py_compile py_compile.compile('1.py') #將1.py編譯成1.pyc [root@localhost test]# python 2.py [root@localhost test]# ls 1.py* 1.py 1.pyc
pyo文件是優(yōu)化編譯后的程序,python -O 源文件即可將源程序編譯為pyo文件:
[root@localhost test]# ls b.py* b.py [root@localhost test]# python -O -m py_compile b.py [root@localhost test]# ls b.py* b.py b.pyo
五、python的實現(xiàn)
CPython:原始、標(biāo)準的實現(xiàn)方式
Jython:用于與Java語言集成的實現(xiàn)
IronPython:用于與.NET框架集成的實現(xiàn)
六、編寫、執(zhí)行python代碼
可以通過兩種方式來執(zhí)行python代碼:
1、交互式解釋器
2、python程序文件
交互式解釋器與python程序文件的利弊:
交互式模式下的程序執(zhí)行完后難以再次運行,但是執(zhí)行的代碼可以立馬看到效果;
將編寫的程序保存至文件(.py)中可以方便多次運行,但無法立馬看到執(zhí)行效果。
python的程序文件分類:
包含一系列預(yù)編寫好的語句的程序文件稱作“模塊”;
能夠直接運行的模塊文件通常稱作腳本(即程序的頂層文件)
七、python的程序文件結(jié)構(gòu)
python的源程序文件通常以.py為擴展名,例如,新建一個名為firstpycode.py的文件,內(nèi)容如下所示:
[root@localhost test]# cat firstpycode.py #!/usr/bin/python import platform print platform.uname()
第一行為shebang,即執(zhí)行腳本時通知內(nèi)核要啟動的解釋器。
如果腳本文件中沒有這一行,那么它執(zhí)行時會默認用當(dāng)前shell(即:$SHELL環(huán)境變量)去解釋這個腳本;
如果#!之后的解釋程序是一個可執(zhí)行文件,那么執(zhí)行這個腳本時,它就會把文件名及其參數(shù)一起作為參數(shù)傳給這個解釋程序去執(zhí)行。
如果#!之后的解釋程序不是一個可執(zhí)行文件,那么指定的解釋程序會被忽略,轉(zhuǎn)而交給當(dāng)前的SHELL去執(zhí)行這個腳本。
如果#!指定的解釋程序不存在,則會報錯“bad interpreter: No such file or directory”
如果#!指定的解釋程序沒有可執(zhí)行權(quán)限,則會報錯“bad interpreter: Permission denied”
注意:#!之后的解釋程序,必須寫絕對路徑,它是不會自動到$PATH中尋找解釋器的
第二行通過import導(dǎo)入一個python模塊platform。
第三行打印platform模塊的uname方法的執(zhí)行結(jié)果。
python程序的組成:python程序可以分解成模塊、語句、表達式和對象
程序由模塊構(gòu)成;
模塊包含語句;
語句包含表達式;
表達式建立并處理對象
表達式是“某事”,而語句是“做某事(即指令)”,例如,“3+4”是某事,而“print 3+4”則是做某事。
語句的特性:它們改變了事物,例如,賦值語句改變了變量,print語句改變了屏幕輸出等
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。