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