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