Python面向?qū)ο笸暾坛?/p>
奇酷學(xué)員講師們專為小白編寫的Python面向?qū)ο蟮耐暾坛?,在給大家分享之前呢!奇小酷推薦一個奇酷的交流圣地,里面都是一群熱愛并在學(xué)習(xí)Python的奇酷學(xué)員們,群資料也上傳了好多Python的課程視頻教程,里面的老師們積極解決小白的問題,這個Python群:514317840 歡迎大家進來一起交流討論,一起進步,讓奇酷成為你學(xué)習(xí)Python路上的摯友。
簡介?
面向?qū)ο?、解釋型的編程語言。python3.x各方面更成熟,將來肯定是主流,python2.x處理速度更快點。python3.x簡潔、易學(xué)、幾乎全能、支持面向?qū)ο?,越來越多公司用python3.x。??
建議學(xué)python3.x??
能做什么??
數(shù)據(jù)分析與挖掘、黑客逆向編成、機器學(xué)習(xí)、網(wǎng)絡(luò)爬蟲、開發(fā)游戲、自動化運維、開發(fā)WEB項目。??
python 安裝??
python3.5.2 64位 穩(wěn)定??
官網(wǎng) www.python.org(搜狗瀏覽器訪問,download windows )??
管理員身份運行??
customise??
勾選2、3 1隨便 最后兩個不勾??
設(shè)置安裝盤??
advanced options (選creat、add)??
設(shè)置環(huán)境變量---> 告訴系統(tǒng)python安裝在什么地方了??
(比較慢、)??
python語法基礎(chǔ)??
輸出??
輸出hellow world??
輸入IDLE---> python??
print(“要輸出的內(nèi)容”)??
shell一行一行執(zhí)行。ctrl+N 多行執(zhí)行??
后綴名.py??
注釋??
#注釋法?
三引號注釋法---英文輸入法下兩端輸入三個單引號或者多引號(前后要對應(yīng))?
標(biāo)識符??
命名規(guī)則:第一個字符為字母或下劃線;除了第一個字的其他字符可以是字母、下劃線或數(shù)字。如_jh3ih/j_3hhf??
變量??
和標(biāo)識符命名規(guī)則相同。??
賦值=從右往左看??
數(shù)據(jù)類型??
默認(rèn)數(shù)據(jù)類型:數(shù)、??
字符串(a='abc'/a2="abc"/a3='''abc''')、?
列表(list)---存儲多個元素[,隔開,從0開始編號]列表內(nèi)元素可以賦值?
、元祖(tuple)---()元祖內(nèi)不可以重新賦值,取值和列表方式一樣、?
集合(set)---=set{"字符串"}輸出{'','',....}---去重、集合運算?
字典(dictionary)---{鍵:值,鍵:值.....}---d={"abc":6,"q":"daa"}。取值規(guī)則:字典名["對應(yīng)鍵名"]--d["q"]輸出daa?
運算符 +、-、*、/、%。基本的數(shù)學(xué)運算符的優(yōu)先級規(guī)律在python上基本使用。實在不清楚優(yōu)先級規(guī)律,為需要先執(zhí)行的運算加上括號。+號可以進行字符串的連接---j="da",k="abc"+j--> k="abcda"?
縮進??
同一層次的代碼,處于同一個縮進幅度上,下一層次的代碼,需要相對于上一層縮進,使用tab縮進。??
python控制流??
三種控制流概述??
順序結(jié)構(gòu)?
條件分支結(jié)構(gòu) if():/ elif():---else if:()/else:?
循環(huán)結(jié)構(gòu)?
while --while():-->??
for??
便利列表--a=["qF","D","fd","d"] for i in a:-->?
進行常規(guī)循環(huán)--for i in range(0,10)-->?
中斷結(jié)構(gòu)??
break?
全部直接退出,整個循環(huán)中斷??
continue?
中斷一次循環(huán),繼續(xù)下一次循環(huán)??
乘法口訣??
for i in range(1,10) : ?
for j in range(1,i+1):?
print(str(i)+"*"+str(j)+"="+str(i*j),end=" ")?
print()?
end代表不換行輸出、注意python中縮進的含義,相同縮進代表相同層級??
作業(yè):逆向輸出乘法口訣(9-->1)?
#逆向輸出乘法口訣??
for i in range(1,10):?
for j in range(1,11-i):?
print(str(10-i)+"*"+str(11-j-i)+"="+str((10-i)*(11-j-i)),end=" ")?
print()?
for i in range(9,0,-1):?
for j in range(i,0,-1):?
print(str(i)+"*"+str(j)+"="+str(i*j),end=" ")?
print()?
函數(shù)??
函數(shù)的本質(zhì)是功能的封裝--def 函數(shù)名(參數(shù))??
局部變量與全局變量??
作用域從變量開始到程序的最末的變量叫做全局變量,作用域只在局部的變量叫做局部分量。??
函數(shù)內(nèi)部定義的變量是局部變量,不能再外部輸出或調(diào)用。??
函數(shù)參數(shù)的使用??
函數(shù)定義的格式--def 函數(shù)名(參數(shù))??
def abc(): print("agg")??
調(diào)用----輸入 函數(shù)名()??
參數(shù):與外界溝通的接口??
形參?
函數(shù)定義的時候使用形參??
實參?
函數(shù)調(diào)用的時候用實參??
python模塊實戰(zhàn)??
什么是python模塊??
為了讓python程序?qū)崿F(xiàn)更方便,可以根據(jù)需求類別將一些廠檢單功能(函數(shù))組合在一起,形成模塊。以后要實現(xiàn)這一類功能的時候,直接導(dǎo)入該模塊即可,模塊里面的函數(shù)叫做模塊的方法。系統(tǒng)自帶的模塊在安裝目錄的lib目錄中。??
模塊內(nèi)的函數(shù)叫做模塊的方法。??
模塊的導(dǎo)入??
import模塊名?
import cgi??
cgi.closelog()??
from...import...?
from cgi import closelog??
第三方模塊的安裝??
模塊的類別??
自帶模塊?
第三方模塊(較常用)?
pip方式?
cmd---pip---網(wǎng)絡(luò)安裝??
whl下載安裝?
下載lfd python---sp35 amd64--下載另存d盤爬蟲--cmd--d:-cd 文件夾---pip install+下載文件全名(包括后綴)??
直接復(fù)制?
復(fù)制別人的安裝文件(電腦和python型號相同)html文件??
anaconda?
自定義模塊?
在lib目錄下新建文件--??
python文件操作??
文件操作概述??
直接使用對文件進行打開、關(guān)閉、讀取、寫入等操作,使用python可以自動對程序進行處理,比如合并多個Excel表格文件的內(nèi)容。??
文件操作實戰(zhàn)??
文件打開?
操作txt文件---新建txt文檔---寫入內(nèi)容--如何用python讀取其中的內(nèi)容--打開--open(文件地址,操作形式)--fh=open("D:/sdags/sgas","r")或fh=open("D:sdagssgas","r")---data=fh.read()--data--全部內(nèi)容--fh.readline()---一行一行地讀??
操作形式:w-寫、r-讀取、b-二進制、a追加??
文件關(guān)閉?
fh.close()打開了用完之后一定要關(guān)閉文件??
文件寫入(w/a+)?
data="dhaghhh"--open("文件地址","w")--fh2.write(data)--必須要先關(guān)閉寫入文件內(nèi)容才會在文件中保存--fh2.close()--多次寫入只需一次文件關(guān)閉(如果用的是w-非追加寫入的話)??
w寫入模式下每次關(guān)閉都會對內(nèi)容進行更新替換,如果想每次寫完不替換原先的內(nèi)容,可以用a+追加寫入模式。??
python異常處理??
概述??
python程序在執(zhí)行的時候,經(jīng)常會遇到異常,如果中間異常不處理,經(jīng)常會導(dǎo)致程序崩潰。比如后面我們寫爬蟲的時候,如果不進行異常處理,很可能蟲爬了一半,直接崩潰了。??
目的是寫程序的過程中遇到異??梢蕴^,不至于程序崩潰,增強程序的生命力。??
異常處理實戰(zhàn)??
在python中創(chuàng)建一個try文件---ctrl+n(new)--ctrl-a--寫一個程---制造異常---??
異常處理格式??
try:?
程序?
except Exception as 異常名稱:?
異常處理部分?
注意: try和except要對應(yīng),且縮進量保持一致;try和循環(huán)的嵌套關(guān)系變化可能帶來不同的處理結(jié)果。?
python面向?qū)ο缶幊??
概述??
面向?qū)ο缶幊碳碠OP編程,區(qū)別于面向過程編程,面向?qū)ο缶幊瘫容^適合開發(fā)大項目,會以更接近人類的思維角度去寫程序。??
類和對象??
類:具有某種特征的事物的集合(群體)??
對象:群體(類)里面的個體??
類是抽象的,對象是具體的---類的實例化??
創(chuàng)造一個類:??
class 類名:?
類里面的內(nèi)容?
...?
class cl1:?
pass?
...?
實例化一個類??
a=cl1()?
...?
a即類(cl1)內(nèi)對象??
構(gòu)造函數(shù)??
類在實例化時自動首先觸發(fā)的函數(shù):init(self,參數(shù))--雙下劃綫,在類中的方法中必須加上self參數(shù)。??
class cl2?
def__init__(self):?
print("hellow,welcome")?
構(gòu)造函數(shù)作用是初始化??
給類加上參數(shù)---給構(gòu)造方法加上參數(shù)??
class cl3?
def __init__(self,name,job):?
print("my name is "+name+"my job is"+job)?
輸入c=cl3("ag","aqw")--輸出my name is ag my job is aqw??
屬性與方法??
屬性: 靜態(tài)的特征。如頭發(fā)、手臂等??
方法: 動態(tài)的特征。如唱歌、寫字等??
類中屬性的定義和調(diào)用:self.屬性名??
class cl4:?
def __init__(self,name,job):?
self.myname=name?
self.myjob=job----定義類的屬性?
輸入c=cl4("ag","aqw")--輸入myname--輸出ag--輸入myjob--輸出aqw--直接調(diào)用類的屬性??
方法:類里面的函數(shù)def 方法名(self,參數(shù))??
class cl5:?
def myfound(self):?
print("aga")?
實例化時不需要添加參數(shù),調(diào)用的時候需要添加??
class cl6:?
def myfound1(self,name):?
print("hellow"+" "+name)?
調(diào)用類里面的方法:??
c=cl6()------實例化?
c.myfound("liuyong")---調(diào)用函數(shù)myfound()并加參數(shù)?
輸出hellow liuyong??
class cl7:?
def __init__(self,name):?
self.myname=name?
def myfound1(self):?
print("hellow"+" "+myname)?
調(diào)用類里面的方法:??
c=cl7("liuyong")------實例化即添加參數(shù)?
c.myfound()---調(diào)用函數(shù)myfound()并加參數(shù)?
繼承與重載??
繼承: 把某一個或多個類(基類)的特征拿過來(單繼承、多繼承)??
重載: 把子類(派生類)里面對繼承過來的特征重新定義??
父類: 基類??
子類: 派生類??
案例講解??
某一個家庭有父親、母親、兒子、女兒,父親可以說話,母親可以寫字,大兒子繼承了父親寫字的能力,女兒同時繼承了父母親、并且有能力聽東西,小兒子繼承了父親,但是優(yōu)化(減弱)了父親說話的能力。??
父親類(基類):??
class father():?
def speak(self):?
print("I can speak")?
單繼承類:class 子類(父類)??
class son1(father):?
pass?
執(zhí)行??
s=son1()?
s.speak()?
---I can speak?
母親類:??
class mother()?
def write(self):?
print("I can write")?
多繼承:??
class daughter(father,mother):?
def listen(self):?
print("I can listen")?
執(zhí)行??
d=daughter()?
d.speak()?
---I can speak?
d.write()?
---I can write?
d.listen()?
---I can listen----多繼承不影響新功能?
重寫(重載):??
class son2(father):?
def speak(self):?
print("I can speak 2")?
執(zhí)行??
s=son2()?
s.speak()?
---I can speak2---重名覆蓋?
作業(yè):??
將多個Excel表格里面的內(nèi)容合并到一個文件中。??
要點:??
使用第三方模塊操作,比如xlrd、xlwt;?
注意使用循環(huán);?
一個Excel中有多個sheet,也需要合并。
奇小酷非常希望大家能加入到奇酷的大家庭來,我們一起學(xué)習(xí)、一起進步,當(dāng)然了,也祝大家學(xué)習(xí)Python的路上一路順風(fēng)!