Python程序設(shè)計(jì)-基礎(chǔ)知識(shí)課件_第1頁
Python程序設(shè)計(jì)-基礎(chǔ)知識(shí)課件_第2頁
Python程序設(shè)計(jì)-基礎(chǔ)知識(shí)課件_第3頁
Python程序設(shè)計(jì)-基礎(chǔ)知識(shí)課件_第4頁
Python程序設(shè)計(jì)-基礎(chǔ)知識(shí)課件_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章基礎(chǔ)知識(shí)第1章基礎(chǔ)知識(shí)1.0Python是一種怎樣的語言解釋型語言,偽編譯膠水語言開源跨平臺(tái)免費(fèi)、自由軟件強(qiáng)類型、動(dòng)態(tài)類型自動(dòng)內(nèi)存管理面向?qū)ο笥写罅靠捎玫膸煸黾悠渌Z言編寫并編譯的模塊即可擴(kuò)展功能1.0Python是一種怎樣的語言解釋型語言,偽編譯1.1Python版本之爭2.x:一邊鄙視一邊用3.x:必然的趨勢(shì)多版本共存與切換簡便方法:更改系統(tǒng)環(huán)境變量path查看已安裝版本的方法(在所啟動(dòng)的IDLE界面也可以直接看到):>>>importsys>>>sys.version'2.7.8(default,Jun302014,16:08:48)[MSCv.150064bit(AMD64)]'>>>sys.version_infosys.version_info(major=2,minor=7,micro=8,releaselevel='final',serial=0)1.1Python版本之爭2.x:一邊鄙視一邊用1.2安裝Python//doc///python默認(rèn)編程環(huán)境:IDLE常用快捷鍵:Alt+P、Alt+N:瀏覽歷史命令Ctrl+F6:重啟Shell,之前定義的對(duì)象全部無效F1:打開Python幫助文檔Alt+/:自動(dòng)補(bǔ)全前面曾經(jīng)出現(xiàn)過的單詞,在多個(gè)單詞中循環(huán)選擇Ctrl+[、Ctrl+]:縮進(jìn)代碼Alt+3、Alt+4:注釋、取消注釋其他可選開發(fā)環(huán)境:wxPython、Jython、1.2安裝Pythonhttps://www.python1.3使用pip管理第三方包Python2中需要單獨(dú)安裝下載地址:/pypi/pip安裝方法:cmd==>pythonget-pip.py用法示例pipinstallNumPypiplistpipinstall--upgradeSomePackagepipuninstallSomePackagePython3安裝包中已默認(rèn)包含pip1.3使用pip管理第三方包Python2中需要單獨(dú)安裝1.4

Python基礎(chǔ)知識(shí)1.4Python基礎(chǔ)知識(shí)1.4.1Python的對(duì)象模型對(duì)象是python語言中最基本的概念,在python中處理的每樣?xùn)|西都是對(duì)象。python中有許多內(nèi)置對(duì)象可供編程者使用,內(nèi)置對(duì)象可直接使用,如數(shù)字、字符串、列表、del等;非內(nèi)置對(duì)象需要導(dǎo)入模塊才能使用,如正弦函數(shù)sin(x),隨機(jī)數(shù)產(chǎn)生函數(shù)random()等。1.4.1Python的對(duì)象模型對(duì)象是python語言中最1.4.1Python的對(duì)象模型常用內(nèi)置對(duì)象對(duì)象類型示例數(shù)字1234,

3.14,

3+4j字符串'swfu',"I'mstudent",'''Python'''

日期2012-08-25列表[1,2,3]字典{1:'food',2:'taste',3:'import'}元組(2,-5,6)文件f=open('data.dat','r')集合set('abc'),{'a','b','c'}布爾型True,False空類型None編程單元類型函數(shù)、模塊、類1.4.1Python的對(duì)象模型常用內(nèi)置對(duì)象對(duì)象類型示例數(shù)1.4.2python的變量和引用1.變量的創(chuàng)建

x=3創(chuàng)建了變量x,不需要提前聲明變量a,b=3,5a,b=b,a2.引用

在python中從變量到對(duì)象的連接稱為引用。>>>x=3變量擁有自己的存儲(chǔ)空間,變量連接到對(duì)象是該變量存儲(chǔ)了對(duì)象單元的內(nèi)存地址,并沒有存儲(chǔ)對(duì)象的值。x3變量對(duì)象引用1.4.2python的變量和引用1.變量的創(chuàng)建x3變量對(duì)1.4.2python的變量和引用3.共享引用

共享引用是指多個(gè)變量引用同一個(gè)對(duì)象。下面的語句使兩個(gè)變量都引用同一個(gè)對(duì)象3>>>a=3>>>b=a使用id函數(shù)可以查看對(duì)象的內(nèi)存地址4.垃圾回收機(jī)制對(duì)于沒有任何變量指向的值,Python自動(dòng)將其刪除。Python跟蹤所有的值,并自動(dòng)刪除不再有變量指向的值。1.4.2python的變量和引用3.共享引用1.4.2python的變量和引用5.對(duì)象類型的動(dòng)態(tài)的,強(qiáng)類型>>>a=3>>>type(a)<type'int'>>>>a='4'>>>type(a)<type'str'>>>>a={3,5}>>>type(a)<type'set'>>>>a=[1,2,3]>>>type(a)<type'list'>1.4.2python的變量和引用5.對(duì)象類型的動(dòng)態(tài)的,強(qiáng)1.4.2python的變量和引用6.變量命名以字母或下劃線(有特殊含義)開頭變量名中不能有空格以及標(biāo)點(diǎn)符號(hào)(括號(hào)、引號(hào)、逗號(hào)、斜線、反斜線、冒號(hào)、句號(hào)、問號(hào)等等)不要使用關(guān)鍵字(在keyword模塊中)作變量名不要使用系統(tǒng)內(nèi)置的模塊名或函數(shù)名(可以通過dir(__builtins__)查看)作變量名大小寫敏感1.4.2python的變量和引用6.變量命名1.4.3數(shù)字?jǐn)?shù)字是python中最常用的對(duì)象,屬于不可變對(duì)象??梢员硎救我獯笮〉臄?shù)字。>>>a=99999999999999999999999999999999>>>a*a9999999999999999999999999999999800000000000000000000000000000001L>>>a**3999999999999999999999999999999970000000000000000000000000000000299999999999999999999999999999999LPython的IDEL交互界面可以當(dāng)做簡便計(jì)算器來使用。1.4.3數(shù)字?jǐn)?shù)字是python中最常用的對(duì)象,屬于不可1.4.3數(shù)字整數(shù)十進(jìn)制整數(shù)如,0、-1、9、123十六進(jìn)制整數(shù),需要16個(gè)數(shù)字0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f來表示整數(shù),必須以0x開頭,如0x10、0xfa、0xabcdef八進(jìn)制整數(shù),只需要8個(gè)數(shù)字0、1、2、3、4、5、6、7來表示整數(shù),必須以0o開頭,如0o35、0o11二進(jìn)制整數(shù)、只需要2個(gè)數(shù)字0、1來表示整數(shù),必須以0b開頭如,0b101、0b1001.4.3數(shù)字整數(shù)1.4.3數(shù)字浮點(diǎn)數(shù)浮點(diǎn)數(shù)又稱小數(shù),15.0、0.37、-11.2、1.2e2、314.15e-21.4.3數(shù)字浮點(diǎn)數(shù)1.4.3數(shù)字復(fù)數(shù)Python中的復(fù)數(shù)與數(shù)學(xué)上的復(fù)數(shù)一致,由實(shí)部和虛部構(gòu)成,并且使用j或J來表示虛部。>>>a=3+4j>>>b=5+6j>>>c=a+b>>>c8+10j>>>c.real#復(fù)數(shù)的實(shí)部8.0>>>c.imag #復(fù)數(shù)的虛部10.0>>>a.conjugate()(3-4j)1.4.3數(shù)字復(fù)數(shù)1.4.4字符串用單引號(hào)、雙引號(hào)或三引號(hào)括起來的符號(hào)系列稱為字符串單引號(hào)、雙引號(hào)、三單引號(hào)、三雙引號(hào)可以互相嵌套,用來表示復(fù)雜字符串。'abc'、'123'、'中國'、"Python"字符串屬于不可變序列

空串表示為''或

""

三引號(hào)'''或"""表示的字符串可以換行,支持排版較為復(fù)雜的字符串;三引號(hào)還可以在程序中表示較長的注釋。1.4.4字符串用單引號(hào)、雙引號(hào)或三引號(hào)括起來的符號(hào)系列1.4.4字符串1.字符串合并>>>a='abc'+'123'#生成新對(duì)象2.字符串格式化

把對(duì)象按格式要求轉(zhuǎn)換為字符串。>>>a=3.6674>>>'%7.3f'%a#或者直接使用str(a)'3.667'1.4.4字符串1.字符串合并1.4.4字符串3.轉(zhuǎn)義字符\n:換行符\t:制表符\r:回車\’:單引號(hào)\”:雙引號(hào)\\:一個(gè)\\ddd:3位八進(jìn)制數(shù)對(duì)應(yīng)的字符\xhh:2位十六進(jìn)制數(shù)對(duì)應(yīng)的字符字符串界定符前面加字母r表示原始字符串,其中的特殊字符不進(jìn)行轉(zhuǎn)義,但字符串的最后一個(gè)字符不能是\。1.4.4字符串3.轉(zhuǎn)義字符1.4.5操作符和表達(dá)式操

符描

述x+y,

x-y加法/字符串合并,減法/集合差集x*y,

x/y,

x//y,

x%y乘法/重復(fù),除法,求整商,余數(shù)/格式化(對(duì)實(shí)數(shù)可以進(jìn)行整除和余數(shù)運(yùn)算)x**y冪運(yùn)算x<y,

x<=y,

x>y,

x>=y大小比較,集合的包含關(guān)系比較x==y,

x!=y相等比較(值),不等比較xory邏輯或(只有x為假才會(huì)計(jì)算y)xandy邏輯與(只有x為真才會(huì)計(jì)算y)notx邏輯非xiny,xnotiny成員與集合的關(guān)系xisy,xisnoty對(duì)象實(shí)體測試(地址)|、^、&、<<、>>位運(yùn)算符1.4.5操作符和表達(dá)式操作符描述x+y,1.4.6常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù)>>>dir(__builtins__)1.4.6常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用1.4.6常用內(nèi)置函數(shù)函

數(shù)功

能abs(x)返回?cái)?shù)字x的絕對(duì)值bin(x)把數(shù)字x轉(zhuǎn)換為二進(jìn)制串chr(x)返回編碼為x的字符eval(s[,globals[,locals]])計(jì)算字符串中表達(dá)式的值并返回float(x)把數(shù)字或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回help(obj)返回對(duì)象obj的幫助信息hex(x)把數(shù)字x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對(duì)象obj的標(biāo)識(shí)input([提示串])接受鍵盤輸入,返回字符串len(obj)返回對(duì)象obj包含的元素個(gè)數(shù)1.4.6常用內(nèi)置函數(shù)函數(shù)功能abs(x)1.4.6常用內(nèi)置函數(shù)oct(x)把數(shù)字x轉(zhuǎn)換為八進(jìn)制串ord(s)返回1個(gè)字符s的編碼。chr(ord('3')+1)==>'4'range([start,]

end[,step])返回一個(gè)等差數(shù)列,不包括終值round(x[,小數(shù)位數(shù)])對(duì)x進(jìn)行四舍五入。若不指定小數(shù)位數(shù),則返回整數(shù)。str(obj)把對(duì)象obj轉(zhuǎn)換為字符串int(x[,d])返回?cái)?shù)字整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制list(x),set([obj]),tuple(x)把對(duì)象轉(zhuǎn)換為列表、集合或元組并返回max(x),min(x),sum(x)返回序列中的最大值、最小值或數(shù)值之和pow(x,y)返回x的y次方sorted(列表[,cmp[,key[reverse]]]返回排序后的列表type(obj)返回對(duì)象obj的類型1.4.6常用內(nèi)置函數(shù)oct(x)把數(shù)字x轉(zhuǎn)換為八進(jìn)制串1.4.7對(duì)象的刪除Python中刪除對(duì)象用del語句。del用來刪除一個(gè)對(duì)象,并釋放對(duì)象所占資源。del的用法演示如下:>>>a=[1,2,3]>>>dela[1]>>>a[1,3]>>>x=5>>>x5>>>delx#此后x就不存在了

1.4.7對(duì)象的刪除Python中刪除對(duì)象用del語句。1.4.8基本輸入輸出用Python進(jìn)行程序設(shè)計(jì),輸入是通過input()函數(shù)來實(shí)現(xiàn)的,imput()的一般格式為:x=input('提示:')該函數(shù)返回輸入的對(duì)象。可輸入數(shù)字、字符串和其它任意類型對(duì)象。1.4.8基本輸入輸出用Python進(jìn)行程序設(shè)計(jì),輸入是通1.4.8基本輸入輸出輸出是通過print語句來完成的,print語句的一般格式為:print對(duì)象1,對(duì)象2,...,對(duì)象n在Python3中,print是函數(shù),而不是語句。1.4.8基本輸入輸出輸出是通過print語句來完成的,p1.4.8基本輸入輸出在Python2.7.8之前的版本中進(jìn)行重定向輸出的用法:>>>fp=open(r'c:\mytest.txt','a+')>>>print>>fp,"Hello,world"

>>>fp.close()在Python3.4.2版本中進(jìn)行重定向輸出的用法:>>>fp=open(r'd:\mytest.txt','a+')>>>print('Hello,world!',file=fp)>>>fp.close()1.4.8基本輸入輸出在Python2.7.8之前的版本中1.4.9模塊的使用Python默認(rèn)安裝僅包含部分基本或核心模塊,但用戶可以安裝大量的擴(kuò)展模塊,pip是管理模塊的重要工具。在Python啟動(dòng)時(shí),僅加載了很少的一部分模塊,在需要時(shí)由程序員顯式地加載(可能需要先安裝)其他模塊。減小運(yùn)行的壓力,僅加載真正需要的模塊和功能,且具有很強(qiáng)的可擴(kuò)展性。1.4.9模塊的使用Python默認(rèn)安裝僅包含部分基本或1.4.9模塊的使用import模塊名>>>importmath>>>math.sin(0.5)#求0.5的正弦>>>importrandom>>>x=random.random()#獲得[0,1)內(nèi)的隨機(jī)小數(shù)>>>y=random.random()>>>n=random.randint(1,100)#獲得[1,100]上的隨機(jī)整數(shù)可以使用dir函數(shù)查看任意模塊中所有的對(duì)象列表,如果調(diào)用不帶參數(shù)的dir()函數(shù),則返回當(dāng)前腳本的所有名字列表??梢允褂胔elp函數(shù)查看任意模塊或函數(shù)的使用幫助。1.4.9模塊的使用import模塊名1.4.9模塊的使用frommathimportsin#可以減少查詢次數(shù),提高執(zhí)行速度frommathimport*#謹(jǐn)慎使用>>>frommathimportsin>>>sin(3)0.1411200080598672>>>frommathimportsinasf#別名>>>f(3)0.1411200080598671.4.9模塊的使用frommathimports1.4.9模塊的使用可以使用sys.modules.items()顯示所有預(yù)加載模塊的相關(guān)信息在2.x中可以使用reload函數(shù)重新導(dǎo)入一個(gè)模塊,在3.x中,需要使用imp模塊的reload函數(shù)Python首先在當(dāng)前目錄中查找需要導(dǎo)入的模塊文件,如果沒有找到則從sys模塊的path變量所指定的目錄中查找。可以使用sys模塊的path變量查看python導(dǎo)入模塊時(shí)搜索模塊的路徑,也可以向其中append自定義的目錄以擴(kuò)展搜索路徑。在導(dǎo)入模塊時(shí),會(huì)優(yōu)先導(dǎo)入相應(yīng)的pyc文件,如果相應(yīng)的pyc文件與py文件時(shí)間不相符,則導(dǎo)入py文件并重新編譯該模塊。1.4.9模塊的使用可以使用sys.modules.it1.4.9模塊的使用ossysmathLocale:提供了C語言本地化函數(shù)的接口,并提供相關(guān)函數(shù)實(shí)現(xiàn)基于當(dāng)前l(fā)ocale設(shè)置的數(shù)字與字符串轉(zhuǎn)換randomstructpickle:序列化datetimetimewmi:需安裝tkinter:GUI開發(fā)urllib/urllib2:網(wǎng)頁編程Pygame:游戲開發(fā)tkinter、wxPython:GUI編程SciPy:科學(xué)計(jì)算PIL:圖像處理fabric:遠(yuǎn)程操作與部署,/en/1.10/capstone:反匯編框架ropper:ROP相關(guān)框架IDAPython:IDA插件,/p/idapython/Yara:惡意軟件識(shí)別與分類引擎1.4.9模塊的使用os1.5Python代碼規(guī)范(1)縮進(jìn)類定義、函數(shù)定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),行尾的冒號(hào)表示縮進(jìn)的開始

python程序是依靠代碼塊的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系的,縮進(jìn)結(jié)束就表示一個(gè)代碼塊結(jié)束了。

同一個(gè)級(jí)別的代碼塊的縮進(jìn)量必須相同。一般而言,以4個(gè)空格為基本縮進(jìn)單位,可以通過下面的方法進(jìn)行代碼塊的縮進(jìn)和反縮進(jìn):FortmatIndentRegion/DedentRegion1.5Python代碼規(guī)范(1)縮進(jìn)1.5Python代碼規(guī)范(2)注釋一個(gè)好的、可讀性強(qiáng)的程序一般包含30%以上的注釋。常用的注釋方式主要有兩種:以#開始,表示本行#之后的內(nèi)容為注釋包含在一對(duì)三引號(hào)'''...'''或"""..."""之間且不屬于任何語句的內(nèi)容將被解釋器認(rèn)為是注釋在IDLE開發(fā)環(huán)境中,可以通過下面的操作快速注釋/解除注釋大段內(nèi)容:FormatCommentOutRegion/UncommentRegion1.5Python代碼規(guī)范(2)注釋1.5Python代碼規(guī)范(3)每個(gè)import只導(dǎo)入一個(gè)模塊(4)如果一行語句太長,可以在行尾加上\來換行分成多行,但是更建議使用括號(hào)來包含多行內(nèi)容。(5)必要的空格與空行運(yùn)算符兩側(cè)、函數(shù)參數(shù)之間、逗號(hào)兩側(cè)建議使用空格分開。不同功能的代碼塊之間、不同的函數(shù)定義之間建議增加一個(gè)空行以增加可讀性。(6)適當(dāng)使用異常處理結(jié)構(gòu)進(jìn)行容錯(cuò),后面將詳細(xì)講解。(7)軟件應(yīng)具有較強(qiáng)的可測試性,測試與開發(fā)齊頭并進(jìn),后面將詳細(xì)講解。1.5Python代碼規(guī)范(3)每個(gè)import只導(dǎo)入一1.6Python文件名.py:Python源文件.pyc:Python字節(jié)碼文件。對(duì)于Python模塊,第一次被導(dǎo)入時(shí)將被編譯成字節(jié)碼的形式,以提高腳本的啟動(dòng)速度。對(duì)于非模塊文件,直接執(zhí)行時(shí)并不生成pyc文件,可以使用py_compile模塊的compile函數(shù)進(jìn)行編譯。.pyo:優(yōu)化的Python字節(jié)碼文件??梢允褂谩眕ython–Ofile.py”或”python–OOfile.py”進(jìn)行優(yōu)化編譯。1.6Python文件名.py:Python源文件1.7Python程序的運(yùn)行方式每個(gè)Python腳本在運(yùn)行時(shí)都有一個(gè)__name__屬性。如果腳本作為模塊被導(dǎo)入,則其__name__屬性被設(shè)置為模塊名;如果腳本獨(dú)立運(yùn)行,則其__name__屬性被設(shè)置為__main__。1.7Python程序的運(yùn)行方式每個(gè)Python腳本在運(yùn)行1.8編寫自己的包與模塊包可以看做處于同一目錄中的模塊。在包的每個(gè)目錄中都必須包含一個(gè)__init__.py文件,該文件可以是一個(gè)空文件,僅用于表示該目錄是一個(gè)包。__init__.py文件的主要用途是設(shè)置__all__變量以及所包含的包初始化所需的代碼。其中__all__變量中定義的對(duì)象可以在使用from…import*時(shí)全部正確導(dǎo)入。1.8編寫自己的包與模塊包可以看做處于同一目錄中的模塊。1.9Python快速入門問題1:用戶輸入一個(gè)三位自然數(shù),計(jì)算并輸出其佰位、十位和個(gè)位上的數(shù)字。x

=

input('請(qǐng)輸入一個(gè)三位數(shù):')a

=

x//100b

=x//10%10#或b=x%100//10c

=

x

-

100*a

-

10*b#或c=x%10printa,b,c1.9Python快速入門問題1:用戶輸入一個(gè)三位自然數(shù),1.9Python快速入門問題2:已知三角形的兩邊長及其夾角,求第三邊長。importmathx

=

input('輸入兩邊及夾角(度):')a,b,sita

=

xc

=

math.sqrt(a**2

+

b**2

-

2*a*b*math.cos(sita*math.pi/180))print

'c=',c1.9Python快速入門問題2:已知三角形的兩邊長及其夾1.9Python快速入門上面的代碼也可以寫成這樣,雖然減少了需要輸入的代碼,但一般不建議這樣做:frommathimport*x

=

input('輸入兩邊及夾角(度):')a,b,sita

=

xc

=

sqrt(a**2

+

b**2

-

2*a*b*cos(sita*pi/180))print

'c=',c1.9Python快速入門上面的代碼也可以寫成這樣,雖然減1.9Python快速入門這樣就可以了:frommathimportsqrtx

=

input('輸入兩邊及夾角(度):')a,b,sita

=

xc

=

sqrt(a**2

+

b**2

-

2*a*b*cos(sita*pi/180))print

'c=',c1.9Python快速入門這樣就可以了:1.9Python快速入門問題3:任意輸入三個(gè)英文單詞,按字典順序輸出。s

=

input('x,y,z=')x,

y,z

=

s.split(',')ifx

>

y:

x,y

=

y,xifx

>

z:x,z

=

z,xify

>

z:y,z

=

z,yprint(x,y,z)1.9Python快速入門問題3:任意輸入三個(gè)英文單詞,按1.10TheZenofPythonBeautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.Complexisbetterthancomplicated.Flatisbetterthannested.Sparseisbetterthandense.Readabilitycounts.Specialcasesaren'tspecialenoughtobreaktherules.Althoughpracticalitybeatspurity.Errorsshouldneverpasssilently.Unlessexplicitlysilenced.Inthefaceofambiguity,refusethetemptationtoguess.Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.Nowisbetterthannever.Althoughneverisoftenbetterthanrightnow.Iftheimplementationishardtoexplain,it'sabadidea.Iftheimplementationiseasytoexplain,itmaybeagoodidea.Namespacesareonehonkinggreatidea--let'sdomoreofthose!1.10TheZenofPythonBeautifu第1章基礎(chǔ)知識(shí)第1章基礎(chǔ)知識(shí)1.0Python是一種怎樣的語言解釋型語言,偽編譯膠水語言開源跨平臺(tái)免費(fèi)、自由軟件強(qiáng)類型、動(dòng)態(tài)類型自動(dòng)內(nèi)存管理面向?qū)ο笥写罅靠捎玫膸煸黾悠渌Z言編寫并編譯的模塊即可擴(kuò)展功能1.0Python是一種怎樣的語言解釋型語言,偽編譯1.1Python版本之爭2.x:一邊鄙視一邊用3.x:必然的趨勢(shì)多版本共存與切換簡便方法:更改系統(tǒng)環(huán)境變量path查看已安裝版本的方法(在所啟動(dòng)的IDLE界面也可以直接看到):>>>importsys>>>sys.version'2.7.8(default,Jun302014,16:08:48)[MSCv.150064bit(AMD64)]'>>>sys.version_infosys.version_info(major=2,minor=7,micro=8,releaselevel='final',serial=0)1.1Python版本之爭2.x:一邊鄙視一邊用1.2安裝Python//doc///python默認(rèn)編程環(huán)境:IDLE常用快捷鍵:Alt+P、Alt+N:瀏覽歷史命令Ctrl+F6:重啟Shell,之前定義的對(duì)象全部無效F1:打開Python幫助文檔Alt+/:自動(dòng)補(bǔ)全前面曾經(jīng)出現(xiàn)過的單詞,在多個(gè)單詞中循環(huán)選擇Ctrl+[、Ctrl+]:縮進(jìn)代碼Alt+3、Alt+4:注釋、取消注釋其他可選開發(fā)環(huán)境:wxPython、Jython、1.2安裝Pythonhttps://www.python1.3使用pip管理第三方包Python2中需要單獨(dú)安裝下載地址:/pypi/pip安裝方法:cmd==>pythonget-pip.py用法示例pipinstallNumPypiplistpipinstall--upgradeSomePackagepipuninstallSomePackagePython3安裝包中已默認(rèn)包含pip1.3使用pip管理第三方包Python2中需要單獨(dú)安裝1.4

Python基礎(chǔ)知識(shí)1.4Python基礎(chǔ)知識(shí)1.4.1Python的對(duì)象模型對(duì)象是python語言中最基本的概念,在python中處理的每樣?xùn)|西都是對(duì)象。python中有許多內(nèi)置對(duì)象可供編程者使用,內(nèi)置對(duì)象可直接使用,如數(shù)字、字符串、列表、del等;非內(nèi)置對(duì)象需要導(dǎo)入模塊才能使用,如正弦函數(shù)sin(x),隨機(jī)數(shù)產(chǎn)生函數(shù)random()等。1.4.1Python的對(duì)象模型對(duì)象是python語言中最1.4.1Python的對(duì)象模型常用內(nèi)置對(duì)象對(duì)象類型示例數(shù)字1234,

3.14,

3+4j字符串'swfu',"I'mstudent",'''Python'''

日期2012-08-25列表[1,2,3]字典{1:'food',2:'taste',3:'import'}元組(2,-5,6)文件f=open('data.dat','r')集合set('abc'),{'a','b','c'}布爾型True,False空類型None編程單元類型函數(shù)、模塊、類1.4.1Python的對(duì)象模型常用內(nèi)置對(duì)象對(duì)象類型示例數(shù)1.4.2python的變量和引用1.變量的創(chuàng)建

x=3創(chuàng)建了變量x,不需要提前聲明變量a,b=3,5a,b=b,a2.引用

在python中從變量到對(duì)象的連接稱為引用。>>>x=3變量擁有自己的存儲(chǔ)空間,變量連接到對(duì)象是該變量存儲(chǔ)了對(duì)象單元的內(nèi)存地址,并沒有存儲(chǔ)對(duì)象的值。x3變量對(duì)象引用1.4.2python的變量和引用1.變量的創(chuàng)建x3變量對(duì)1.4.2python的變量和引用3.共享引用

共享引用是指多個(gè)變量引用同一個(gè)對(duì)象。下面的語句使兩個(gè)變量都引用同一個(gè)對(duì)象3>>>a=3>>>b=a使用id函數(shù)可以查看對(duì)象的內(nèi)存地址4.垃圾回收機(jī)制對(duì)于沒有任何變量指向的值,Python自動(dòng)將其刪除。Python跟蹤所有的值,并自動(dòng)刪除不再有變量指向的值。1.4.2python的變量和引用3.共享引用1.4.2python的變量和引用5.對(duì)象類型的動(dòng)態(tài)的,強(qiáng)類型>>>a=3>>>type(a)<type'int'>>>>a='4'>>>type(a)<type'str'>>>>a={3,5}>>>type(a)<type'set'>>>>a=[1,2,3]>>>type(a)<type'list'>1.4.2python的變量和引用5.對(duì)象類型的動(dòng)態(tài)的,強(qiáng)1.4.2python的變量和引用6.變量命名以字母或下劃線(有特殊含義)開頭變量名中不能有空格以及標(biāo)點(diǎn)符號(hào)(括號(hào)、引號(hào)、逗號(hào)、斜線、反斜線、冒號(hào)、句號(hào)、問號(hào)等等)不要使用關(guān)鍵字(在keyword模塊中)作變量名不要使用系統(tǒng)內(nèi)置的模塊名或函數(shù)名(可以通過dir(__builtins__)查看)作變量名大小寫敏感1.4.2python的變量和引用6.變量命名1.4.3數(shù)字?jǐn)?shù)字是python中最常用的對(duì)象,屬于不可變對(duì)象。可以表示任意大小的數(shù)字。>>>a=99999999999999999999999999999999>>>a*a9999999999999999999999999999999800000000000000000000000000000001L>>>a**3999999999999999999999999999999970000000000000000000000000000000299999999999999999999999999999999LPython的IDEL交互界面可以當(dāng)做簡便計(jì)算器來使用。1.4.3數(shù)字?jǐn)?shù)字是python中最常用的對(duì)象,屬于不可1.4.3數(shù)字整數(shù)十進(jìn)制整數(shù)如,0、-1、9、123十六進(jìn)制整數(shù),需要16個(gè)數(shù)字0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f來表示整數(shù),必須以0x開頭,如0x10、0xfa、0xabcdef八進(jìn)制整數(shù),只需要8個(gè)數(shù)字0、1、2、3、4、5、6、7來表示整數(shù),必須以0o開頭,如0o35、0o11二進(jìn)制整數(shù)、只需要2個(gè)數(shù)字0、1來表示整數(shù),必須以0b開頭如,0b101、0b1001.4.3數(shù)字整數(shù)1.4.3數(shù)字浮點(diǎn)數(shù)浮點(diǎn)數(shù)又稱小數(shù),15.0、0.37、-11.2、1.2e2、314.15e-21.4.3數(shù)字浮點(diǎn)數(shù)1.4.3數(shù)字復(fù)數(shù)Python中的復(fù)數(shù)與數(shù)學(xué)上的復(fù)數(shù)一致,由實(shí)部和虛部構(gòu)成,并且使用j或J來表示虛部。>>>a=3+4j>>>b=5+6j>>>c=a+b>>>c8+10j>>>c.real#復(fù)數(shù)的實(shí)部8.0>>>c.imag #復(fù)數(shù)的虛部10.0>>>a.conjugate()(3-4j)1.4.3數(shù)字復(fù)數(shù)1.4.4字符串用單引號(hào)、雙引號(hào)或三引號(hào)括起來的符號(hào)系列稱為字符串單引號(hào)、雙引號(hào)、三單引號(hào)、三雙引號(hào)可以互相嵌套,用來表示復(fù)雜字符串。'abc'、'123'、'中國'、"Python"字符串屬于不可變序列

空串表示為''或

""

三引號(hào)'''或"""表示的字符串可以換行,支持排版較為復(fù)雜的字符串;三引號(hào)還可以在程序中表示較長的注釋。1.4.4字符串用單引號(hào)、雙引號(hào)或三引號(hào)括起來的符號(hào)系列1.4.4字符串1.字符串合并>>>a='abc'+'123'#生成新對(duì)象2.字符串格式化

把對(duì)象按格式要求轉(zhuǎn)換為字符串。>>>a=3.6674>>>'%7.3f'%a#或者直接使用str(a)'3.667'1.4.4字符串1.字符串合并1.4.4字符串3.轉(zhuǎn)義字符\n:換行符\t:制表符\r:回車\’:單引號(hào)\”:雙引號(hào)\\:一個(gè)\\ddd:3位八進(jìn)制數(shù)對(duì)應(yīng)的字符\xhh:2位十六進(jìn)制數(shù)對(duì)應(yīng)的字符字符串界定符前面加字母r表示原始字符串,其中的特殊字符不進(jìn)行轉(zhuǎn)義,但字符串的最后一個(gè)字符不能是\。1.4.4字符串3.轉(zhuǎn)義字符1.4.5操作符和表達(dá)式操

符描

述x+y,

x-y加法/字符串合并,減法/集合差集x*y,

x/y,

x//y,

x%y乘法/重復(fù),除法,求整商,余數(shù)/格式化(對(duì)實(shí)數(shù)可以進(jìn)行整除和余數(shù)運(yùn)算)x**y冪運(yùn)算x<y,

x<=y,

x>y,

x>=y大小比較,集合的包含關(guān)系比較x==y,

x!=y相等比較(值),不等比較xory邏輯或(只有x為假才會(huì)計(jì)算y)xandy邏輯與(只有x為真才會(huì)計(jì)算y)notx邏輯非xiny,xnotiny成員與集合的關(guān)系xisy,xisnoty對(duì)象實(shí)體測試(地址)|、^、&、<<、>>位運(yùn)算符1.4.5操作符和表達(dá)式操作符描述x+y,1.4.6常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù)>>>dir(__builtins__)1.4.6常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用1.4.6常用內(nèi)置函數(shù)函

數(shù)功

能abs(x)返回?cái)?shù)字x的絕對(duì)值bin(x)把數(shù)字x轉(zhuǎn)換為二進(jìn)制串chr(x)返回編碼為x的字符eval(s[,globals[,locals]])計(jì)算字符串中表達(dá)式的值并返回float(x)把數(shù)字或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回help(obj)返回對(duì)象obj的幫助信息hex(x)把數(shù)字x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對(duì)象obj的標(biāo)識(shí)input([提示串])接受鍵盤輸入,返回字符串len(obj)返回對(duì)象obj包含的元素個(gè)數(shù)1.4.6常用內(nèi)置函數(shù)函數(shù)功能abs(x)1.4.6常用內(nèi)置函數(shù)oct(x)把數(shù)字x轉(zhuǎn)換為八進(jìn)制串ord(s)返回1個(gè)字符s的編碼。chr(ord('3')+1)==>'4'range([start,]

end[,step])返回一個(gè)等差數(shù)列,不包括終值round(x[,小數(shù)位數(shù)])對(duì)x進(jìn)行四舍五入。若不指定小數(shù)位數(shù),則返回整數(shù)。str(obj)把對(duì)象obj轉(zhuǎn)換為字符串int(x[,d])返回?cái)?shù)字整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制list(x),set([obj]),tuple(x)把對(duì)象轉(zhuǎn)換為列表、集合或元組并返回max(x),min(x),sum(x)返回序列中的最大值、最小值或數(shù)值之和pow(x,y)返回x的y次方sorted(列表[,cmp[,key[reverse]]]返回排序后的列表type(obj)返回對(duì)象obj的類型1.4.6常用內(nèi)置函數(shù)oct(x)把數(shù)字x轉(zhuǎn)換為八進(jìn)制串1.4.7對(duì)象的刪除Python中刪除對(duì)象用del語句。del用來刪除一個(gè)對(duì)象,并釋放對(duì)象所占資源。del的用法演示如下:>>>a=[1,2,3]>>>dela[1]>>>a[1,3]>>>x=5>>>x5>>>delx#此后x就不存在了

1.4.7對(duì)象的刪除Python中刪除對(duì)象用del語句。1.4.8基本輸入輸出用Python進(jìn)行程序設(shè)計(jì),輸入是通過input()函數(shù)來實(shí)現(xiàn)的,imput()的一般格式為:x=input('提示:')該函數(shù)返回輸入的對(duì)象??奢斎霐?shù)字、字符串和其它任意類型對(duì)象。1.4.8基本輸入輸出用Python進(jìn)行程序設(shè)計(jì),輸入是通1.4.8基本輸入輸出輸出是通過print語句來完成的,print語句的一般格式為:print對(duì)象1,對(duì)象2,...,對(duì)象n在Python3中,print是函數(shù),而不是語句。1.4.8基本輸入輸出輸出是通過print語句來完成的,p1.4.8基本輸入輸出在Python2.7.8之前的版本中進(jìn)行重定向輸出的用法:>>>fp=open(r'c:\mytest.txt','a+')>>>print>>fp,"Hello,world"

>>>fp.close()在Python3.4.2版本中進(jìn)行重定向輸出的用法:>>>fp=open(r'd:\mytest.txt','a+')>>>print('Hello,world!',file=fp)>>>fp.close()1.4.8基本輸入輸出在Python2.7.8之前的版本中1.4.9模塊的使用Python默認(rèn)安裝僅包含部分基本或核心模塊,但用戶可以安裝大量的擴(kuò)展模塊,pip是管理模塊的重要工具。在Python啟動(dòng)時(shí),僅加載了很少的一部分模塊,在需要時(shí)由程序員顯式地加載(可能需要先安裝)其他模塊。減小運(yùn)行的壓力,僅加載真正需要的模塊和功能,且具有很強(qiáng)的可擴(kuò)展性。1.4.9模塊的使用Python默認(rèn)安裝僅包含部分基本或1.4.9模塊的使用import模塊名>>>importmath>>>math.sin(0.5)#求0.5的正弦>>>importrandom>>>x=random.random()#獲得[0,1)內(nèi)的隨機(jī)小數(shù)>>>y=random.random()>>>n=random.randint(1,100)#獲得[1,100]上的隨機(jī)整數(shù)可以使用dir函數(shù)查看任意模塊中所有的對(duì)象列表,如果調(diào)用不帶參數(shù)的dir()函數(shù),則返回當(dāng)前腳本的所有名字列表??梢允褂胔elp函數(shù)查看任意模塊或函數(shù)的使用幫助。1.4.9模塊的使用import模塊名1.4.9模塊的使用frommathimportsin#可以減少查詢次數(shù),提高執(zhí)行速度frommathimport*#謹(jǐn)慎使用>>>frommathimportsin>>>sin(3)0.1411200080598672>>>frommathimportsinasf#別名>>>f(3)0.1411200080598671.4.9模塊的使用frommathimports1.4.9模塊的使用可以使用sys.modules.items()顯示所有預(yù)加載模塊的相關(guān)信息在2.x中可以使用reload函數(shù)重新導(dǎo)入一個(gè)模塊,在3.x中,需要使用imp模塊的reload函數(shù)Python首先在當(dāng)前目錄中查找需要導(dǎo)入的模塊文件,如果沒有找到則從sys模塊的path變量所指定的目錄中查找??梢允褂胹ys模塊的path變量查看python導(dǎo)入模塊時(shí)搜索模塊的路徑,也可以向其中append自定義的目錄以擴(kuò)展搜索路徑。在導(dǎo)入模塊時(shí),會(huì)優(yōu)先導(dǎo)入相應(yīng)的pyc文件,如果相應(yīng)的pyc文件與py文件時(shí)間不相符,則導(dǎo)入py文件并重新編譯該模塊。1.4.9模塊的使用可以使用sys.modules.it1.4.9模塊的使用ossysmathLocale:提供了C語言本地化函數(shù)的接口,并提供相關(guān)函數(shù)實(shí)現(xiàn)基于當(dāng)前l(fā)ocale設(shè)置的數(shù)字與字符串轉(zhuǎn)換randomstructpickle:序列化datetimetimewmi:需安裝tkinter:GUI開發(fā)urllib/urllib2:網(wǎng)頁編程Pygame:游戲開發(fā)tkinter、wxPython:GUI編程SciPy:科學(xué)計(jì)算PIL:圖像處理fabric:遠(yuǎn)程操作與部署,/en/1.10/capstone:反匯編框架ropper:ROP相關(guān)框架IDAPython:IDA插件,/p/idapython/Yara:惡意軟件識(shí)別與分類引擎1.4.9模塊的使用os1.5Python代碼規(guī)范(1)縮進(jìn)類定義、函數(shù)定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),行尾的冒號(hào)表示縮進(jìn)的開始

python程序是依靠代碼塊的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系的,縮進(jìn)結(jié)束就表示一個(gè)代碼塊結(jié)束了。

同一個(gè)級(jí)別的代碼塊的縮進(jìn)量必須相同。一般而言,以4個(gè)空格為基本縮進(jìn)單位,可以通過下面的方法進(jìn)行代碼塊的縮進(jìn)和反縮進(jìn):FortmatIndentRegion/DedentRegion1.5Python代碼規(guī)范(1)縮進(jìn)1.5Python代碼規(guī)范(2)注釋一個(gè)好的、可讀性強(qiáng)的程序一般包含30%以上的注釋。常用的注釋方式主要有兩種:以#開始,表示本行#之后的內(nèi)容為注釋包含在一對(duì)三引號(hào)'''...'''或"""..."""之間且不屬于任何語句的內(nèi)容將被解釋器認(rèn)為是注釋在IDLE開發(fā)環(huán)境中,可以通過下面的操作快速注釋/解除注釋大段內(nèi)容:FormatCommentOutRegion/UncommentRegion1.5Python代碼規(guī)范(2)注釋1.5Python代碼規(guī)范(3)每個(gè)import只導(dǎo)入一個(gè)模塊(4)如果一行語句太長,可以在行尾加上\來換行分成多行,但是更建議使用括號(hào)來包含多行內(nèi)容。(5)必要的空格與空行運(yùn)算符兩側(cè)、函數(shù)參數(shù)之間、逗號(hào)兩側(cè)建議使用空格分開。不同功能的代碼塊之間、不同的函數(shù)定義之間建議增加一個(gè)空行以增加可讀性。(6)適當(dāng)使用異常處理結(jié)構(gòu)進(jìn)行容錯(cuò),后面將詳細(xì)講解。(7)軟件應(yīng)具有較強(qiáng)的可測試性,測試與開發(fā)齊頭并進(jìn),后面將詳細(xì)講解。1.5Python代碼規(guī)范(3)每個(gè)import只導(dǎo)入一1.6Python文件名.py:Python源文件.pyc:Python字節(jié)碼文件。對(duì)于Python模塊,第一次被導(dǎo)入時(shí)將被編譯成字節(jié)碼的形式,以提高腳本的啟動(dòng)速度。對(duì)于非模塊文件,直接執(zhí)行時(shí)并不生成pyc文件,可以使用py_compile模塊的compile函數(shù)進(jìn)行編譯。.pyo:優(yōu)化的Python字節(jié)碼文件??梢允褂谩眕ython–Ofile.py”或”python–OOfile.py”進(jìn)行優(yōu)化編譯。1.6Python文件名.py:Python源文件1.7Python程序的運(yùn)行方式每個(gè)Python腳本在運(yùn)行時(shí)都有一個(gè)__name__屬性。如果腳本作為模塊被導(dǎo)入,則其__name__屬性被設(shè)置為模塊名;如果腳本獨(dú)立運(yùn)行,則其__name__屬性被設(shè)置為__main__。1.7Python程序的運(yùn)行方式每個(gè)Python腳本在運(yùn)行1.8編寫自己的包與模塊包可以看做處于同一目錄中的模塊。在包的每個(gè)目錄中都必須包含一個(gè)__init__.py文件,該文件可以是一個(gè)空文件

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論