這篇文章主要介紹了python 基礎(chǔ) 詳細(xì),具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲,下面讓小編帶著大家一起了解一下。
目錄
一:簡介:
二:Python基礎(chǔ)語法
2.1.字面量
2.2.注釋
2.3.數(shù)據(jù)類型轉(zhuǎn)換
2.4.標(biāo)識符
2.5.運(yùn)算符
2.6.字符串
2.6.1.字符串的三種定義方式
2.6.2.字符串拼接
2.6.3.字符串格式化
2.6.4.格式化的精度控制
2.6.5.字符串快速格式化
2.7.數(shù)據(jù)輸入
三:python判斷語句
3.1.if語句的基本格式
3.2.if elif else語句
四:python循環(huán)語句
4.1.while循環(huán)
4.2.for循環(huán)
?4.3.range語句
五:Python函數(shù)
六:Python數(shù)據(jù)容器
6.1.list(列表)
6.2.tuple(元組)
6.3.str(字符串)
6.4.序列的切片
6.5.set(集合)
6.6.dict(字典)
七:Python函數(shù)進(jìn)階
7.1.函數(shù)多返回值
7.2.函數(shù)多種傳參方式
7.2.1.位置參數(shù)
7.2.2.關(guān)鍵字參數(shù)
7.2.3.缺省參數(shù)
7.2.4.不定長參數(shù)
7.2.5.函數(shù)作為參數(shù)傳遞
7.3.匿名函數(shù)
八:Python文件操作
8.1.文件的讀取
8.2.文件的寫入
九:Python異常、模塊與包
9.1.異常的捕獲
9.2.Python模塊
9.3.Python包
十:面向?qū)ο?/p>
10.1.成員方法
10.2.構(gòu)造方法
10.3.封裝
10.4.繼承
?10.5.多態(tài)
一:簡介:
Python 是一種解釋型、面向?qū)ο?/strong>的語言
Python的語法和動態(tài)類型,以及解釋性語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的編程語言
二:Python基礎(chǔ)語法
2.1.字面量
字面量:在代碼中,被寫下來的的固定的值,稱之為字面量
Python中有6種常用的值(數(shù)據(jù))的類型
注意:type()語句可以查看變量存儲的數(shù)據(jù)類型
2.2.注釋
單行注釋:以 #開頭,#右邊 的所有文字當(dāng)作說明,而不是真正要執(zhí)行的程序,起輔助說明作用
注意:#號和注釋內(nèi)容一般建議以一個空格隔開
多行注釋:?以 一對三個雙引號 引起來
2.3.數(shù)據(jù)類型轉(zhuǎn)換
語句(函數(shù)) |
說明 |
int(x) |
將x轉(zhuǎn)換為一個整數(shù) |
float(x) |
將x轉(zhuǎn)換為一個浮點(diǎn)數(shù) |
str(x) |
將對象?x?轉(zhuǎn)換為字符串 |
2.4.標(biāo)識符
標(biāo)識符: 是用戶在編程的時候所使用的一系列名字,用于給變量、類、方法等命名
標(biāo)識符命名中,只允許出現(xiàn): 英文 中文 數(shù)字 下劃線(_) 這四類元素。
注意:不推薦使用中文,數(shù)字不可以開頭,且不可使用關(guān)鍵字
2.5.運(yùn)算符
算術(shù)(數(shù)學(xué))運(yùn)算符:
運(yùn)算符 |
描述 |
實(shí)例 |
+ |
加 |
兩個對象相加?a?+?b?輸出結(jié)果?30 |
- |
減 |
得到負(fù)數(shù)或是一個數(shù)減去另一個數(shù)?a?-?b?輸出結(jié)果?-10 |
* |
乘 |
兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串?a?*?b?輸出結(jié)果?200 |
/ |
除 |
b?/?a?輸出結(jié)果?2 |
// |
取整除 |
返回商的整數(shù)部分?9//2?輸出結(jié)果?4?,?9.0//2.0?輸出結(jié)果?4.0 |
% |
取余 |
返回除法的余數(shù)?b?%?a?輸出結(jié)果?0 |
** |
指數(shù) |
a**b?為10的20次方,?輸出結(jié)果?100000000000000000000 |
復(fù)合賦值運(yùn)算符:
運(yùn)算符 |
描述 |
實(shí)例 |
+= |
加法賦值運(yùn)算符 |
c?+=?a?等效于?c?=?c?+?a |
-= |
減法賦值運(yùn)算符 |
c?-=?a?等效于?c?=?c?-?a |
*= |
乘法賦值運(yùn)算符 |
c?*=?a?等效于?c?=?c?*?a |
/= |
除法賦值運(yùn)算符 |
c?/=?a?等效于?c?=?c?/?a |
%= |
取模賦值運(yùn)算符 |
c?%=?a?等效于?c?=?c?%?a |
**= |
冪賦值運(yùn)算符 |
c?**=?a?等效于?c?=?c?**?a |
//= |
取整除賦值運(yùn)算符 |
c?//=?a?等效于?c?=?c?//?a |
2.6.字符串
2.6.1.字符串的三種定義方式
單引號定義法: 雙引號定義法: 三引號定義法:
其中,單引號定義法,可以內(nèi)含雙引號; 雙引號定義法,可以內(nèi)含單引號 ;并且可以使用轉(zhuǎn)義字符(\)來將引號解除效用,變成普通字符串
2.6.2.字符串拼接
注意:字符串無法和非字符串變量進(jìn)行拼接
?默認(rèn)print語句輸出內(nèi)容會自動換行,在print語句中,加上 end=''?即可輸出不換行了
2.6.3.字符串格式化
我們可以通過如下語法,完成字符串和變量的快速拼接
格式符號 |
轉(zhuǎn)化 |
%s |
將內(nèi)容轉(zhuǎn)換成字符串,放入占位位置 |
%d |
將內(nèi)容轉(zhuǎn)換成整數(shù),放入占位位置 |
%f |
將內(nèi)容轉(zhuǎn)換成浮點(diǎn)型,放入占位位置 |
如下代碼,完成字符串、整數(shù)、浮點(diǎn)數(shù),三種不同類型變量的占位
?其中,% 表示占位符,且在無需使用變量進(jìn)行數(shù)據(jù)存儲的時候,可以直接格式化表達(dá)式(變量的位置放入表達(dá)式),簡化代碼
2.6.4.格式化的精度控制
我們可以使用輔助符號"m.n"來控制數(shù)據(jù)的寬度和精度
m,控制寬度,要求是數(shù)字,如果設(shè)置的寬度小于數(shù)字自身,則不生效
.n,控制小數(shù)點(diǎn)精度,要求是數(shù)字,會進(jìn)行小數(shù)的四舍五入
示例: %5d:表示將整數(shù)的寬度控制在5位,如數(shù)字11,就會變成:[空格][空格][空格]11,用三個空格補(bǔ)足寬度python自學(xué)能行嗎。
%5.2f:表示將寬度控制為5,將小數(shù)點(diǎn)精度設(shè)置為2 。小數(shù)點(diǎn)和小數(shù)部分也算入寬度計(jì)算。如,對11.345設(shè)置了%7.2f 后,結(jié)果是:[空格][空格]11.35。2個空格補(bǔ)足寬度,小數(shù)部分限制2位精度后,四舍五入為 .35
%.2f:表示不限制寬度,只設(shè)置小數(shù)點(diǎn)精度為2,如11.345設(shè)置%.2f后,結(jié)果是11.35
2.6.5.字符串快速格式化
通過語法:f"內(nèi)容{變量}"的格式來快速格式化
?注意:這種寫法不做精度控制,不理會類型
2.7.數(shù)據(jù)輸入
使用input()語句可以從鍵盤獲取輸入
?注意:無論鍵盤輸入什么類型的數(shù)據(jù),獲取到的數(shù)據(jù)永遠(yuǎn)都是字符串類型
三:python判斷語句
3.1.if語句的基本格式
歸屬于if判斷的代碼語句塊,需在前方填充4個空格縮進(jìn)
Python通過縮進(jìn)判斷代碼塊的歸屬關(guān)系。
3.2.if elif else語句
四:python循環(huán)語句
4.1.while循環(huán)
4.2.for循環(huán)
?4.3.range語句
用于獲得一個數(shù)字序列
語法1:range(num)
????????????????????????從0開始,到num結(jié)束(不含num本身)
語法2:range(num1, num2)
????????????????????????從0開始,到num結(jié)束(不含num本身)
?語法3:range(num1, num2, step)
????????????????????????從0開始,到num結(jié)束(不含num本身)
五:Python函數(shù)
函數(shù):是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)特定功能的代碼段
函數(shù)的定義:
?注意:如果函數(shù)沒有使用return語句返回數(shù)據(jù),會返回None這個字面量;在if判斷中,None等同于False;定義變量,但暫時不需要變量有具體值,可以用None來代替
使用 global關(guān)鍵字 可以在函數(shù)內(nèi)部聲明變量為全局變量
六:Python數(shù)據(jù)容器
一種可以容納多份數(shù)據(jù)的數(shù)據(jù)類型,容納的每一份數(shù)據(jù)稱之為1個元素。 每一個元素,可以是任意類型的數(shù)據(jù)
6.1.list(列表)
基本語法:??
列表的方法:
編號 |
使用方式 |
作用 |
1 |
列表.append(元素) |
向列表的尾部追加一個元素 |
2 |
列表.extend(容器) |
將數(shù)據(jù)容器的內(nèi)容(無結(jié)構(gòu))依次取出,追加到列表尾部 |
3 |
列表.insert(下標(biāo),?元素) |
在指定下標(biāo)處,插入指定的元素 |
4 |
del?列表[下標(biāo)] |
刪除列表指定下標(biāo)元素 |
5 |
列表.pop(下標(biāo)) |
刪除列表指定下標(biāo)元素(能得到返回值) |
6 |
列表.remove(元素) |
從前向后,刪除此元素第一個匹配項(xiàng) |
7 |
列表.clear() |
清空列表 |
8 |
列表.count(元素) |
統(tǒng)計(jì)此元素在列表中出現(xiàn)的次數(shù) |
9 |
列表.index(元素) |
查找指定元素在列表的下標(biāo) 找不到報錯ValueError |
10 |
len(列表) |
統(tǒng)計(jì)容器內(nèi)有多少元素 |
列表特點(diǎn):
6.2.tuple(元組)
基本語法:
?注意:元組只有一個數(shù)據(jù),這個數(shù)據(jù)后面要添加逗號
元組的方法:
編號 |
方法 |
作用 |
1 |
index() |
查找某個數(shù)據(jù),如果數(shù)據(jù)存在返回對應(yīng)的下標(biāo),否則報錯 |
2 |
count() |
統(tǒng)計(jì)某個數(shù)據(jù)在當(dāng)前元組出現(xiàn)的次數(shù) |
3 |
len(元組) |
統(tǒng)計(jì)元組內(nèi)的元素個數(shù) |
元組特點(diǎn):
6.3.str(字符串)
字符串的方法:
編號 |
操作 |
說明 |
1 |
字符串[下標(biāo)] |
根據(jù)下標(biāo)索引取出特定位置字符 |
2 |
字符串.index(字符串) |
查找給定字符的第一個匹配項(xiàng)的下標(biāo) |
3 |
字符串.replace(字符串1,?字符串2) |
將字符串內(nèi)的全部字符串1,替換為字符串2 不會修改原字符串,而是得到一個新的 |
4 |
字符串.split(字符串) |
按照給定字符串,對字符串進(jìn)行分隔 不會修改原字符串,而是得到一個新的列表 |
5 |
字符串.strip() 字符串.strip(字符串) |
移除首尾的空格和換行符 或指定字符串 |
6 |
字符串.count(字符串) |
統(tǒng)計(jì)字符串內(nèi)某字符串的出現(xiàn)次數(shù) |
7 |
len(字符串) |
統(tǒng)計(jì)字符串的字符個數(shù) |
字符串特點(diǎn):
字符串容器可以容納的類型是單一的,只能是字符串類型。
字符串不可以修改,如果必須要修改,只能得到一個新的字符串,舊的字符串是無法修改
6.4.序列的切片
序列是指:內(nèi)容連續(xù)、有序,可使用下標(biāo)索引的一類數(shù)據(jù)容器
列表、元組、字符串,均可以可以視為序列
語法:序列[起始下標(biāo):結(jié)束下標(biāo):步長]
表示從序列中,從指定位置開始,依次取出元素,到指定位置結(jié)束,得到一個新序列
- 起始下標(biāo)表示從何處開始,可以留空,留空視作從頭開始
- 結(jié)束下標(biāo)(不含)表示何處結(jié)束,可以留空,留空視作截取到結(jié)尾
- 步長表示,依次取元素的間隔
- 步長為負(fù)數(shù)表示,反向?。ㄗ⒁?,起始下標(biāo)和結(jié)束下標(biāo)也要反向標(biāo)記)
6.5.set(集合)
基本語法:
集合的方法:
編號 |
操作 |
說明 |
1 |
集合.add(元素) |
集合內(nèi)添加一個元素 |
2 |
集合.remove(元素) |
移除集合內(nèi)指定的元素 |
3 |
集合.pop() |
從集合中隨機(jī)刪除一個元素并返回 |
4 |
集合.clear() |
將集合清空 |
5 |
集合1.difference(集合2) |
得到一個新集合,內(nèi)含2個集合的差集 原有的2個集合內(nèi)容不變 |
6 |
集合1.difference_update(集合2) |
在集合1中,刪除集合2中存在的元素 集合1被修改,集合2不變 |
7 |
集合1.union(集合2) |
得到1個新集合,內(nèi)含2個集合的全部元素 原有的2個集合內(nèi)容不變 |
8 |
len(集合) |
得到一個整數(shù),記錄了集合的元素數(shù)量 |
集合特點(diǎn):
相較于列表、元組、字符串來說,不支持元素的重復(fù)(自帶去重功能)、并且內(nèi)容無序
6.6.dict(字典)
字典定義?
?字典的常用操作:
編號 |
操作 |
說明 |
1 |
字典[Key] |
獲取指定Key對應(yīng)的Value值 |
2 |
字典[Key]?=?Value |
添加或更新鍵值對 |
3 |
字典.pop(Key) |
取出Key對應(yīng)的Value并在字典內(nèi)刪除此Key的鍵值對 |
4 |
字典.clear() |
清空字典 |
5 |
字典.keys() |
獲取字典的全部Key,可用于for循環(huán)遍歷字典 |
6 |
len(字典) |
計(jì)算字典內(nèi)的元素數(shù)量 |
字典特點(diǎn):
- 鍵值對的Key和Value可以是任意類型(Key不可為字典)
- 字典內(nèi)Key不允許重復(fù),重復(fù)添加等同于覆蓋原有數(shù)據(jù)
- 字典不可用下標(biāo)索引,而是通過Key檢索Value
6.7.數(shù)據(jù)容器的通用操作
數(shù)據(jù)容器特點(diǎn)對比:
列表 |
元組 |
字符串 |
集合 |
字典 |
|
元素數(shù)量 |
支持多個 |
支持多個 |
支持多個 |
支持多個 |
支持多個 |
元素類型 |
任意 |
任意 |
僅字符 |
任意 |
Key:Value Key:除字典外任意類型 Value:任意類型 |
下標(biāo)索引 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
重復(fù)元素 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
可修改性 |
支持 |
不支持 |
不支持 |
支持 |
支持 |
數(shù)據(jù)有序 |
是 |
是 |
是 |
否 |
否 |
使用場景 |
可修改、可重復(fù)的一批數(shù)據(jù)記錄場景 |
不可修改、可重復(fù)的一批數(shù)據(jù)記錄場景 |
一串字符的記錄場景 |
不可重復(fù)的數(shù)據(jù)記錄場景 |
以Key檢索Value的數(shù)據(jù)記錄場景 |
容器通用功能:
功能 |
描述 |
通用for循環(huán) |
遍歷容器(字典是遍歷key) |
max |
容器內(nèi)最大元素 |
min() |
容器內(nèi)最小元素 |
len() |
容器元素個數(shù) |
list() |
轉(zhuǎn)換為列表 |
tuple() |
轉(zhuǎn)換為元組 |
str() |
轉(zhuǎn)換為字符串 |
set() |
轉(zhuǎn)換為集合 |
sorted(序列,?[reverse=True]) |
排序,reverse=True表示降序 得到一個排好序的列表 |
七:Python函數(shù)進(jìn)階
7.1.函數(shù)多返回值
?按照返回值的順序,寫對應(yīng)順序的多個變量接收即可 變量之間用逗號隔開
7.2.函數(shù)多種傳參方式
7.2.1.位置參數(shù)
調(diào)用函數(shù)時根據(jù)函數(shù)定義的參數(shù)位置來傳遞參
?傳遞的參數(shù)和定義的參數(shù)的順序及個數(shù)必須一致
7.2.2.關(guān)鍵字參數(shù)
函數(shù)調(diào)用時通過“鍵=值”形式傳遞參數(shù)
7.2.3.缺省參數(shù)
缺省參數(shù)也叫默認(rèn)參數(shù),用于定義函數(shù),為參數(shù)提供默認(rèn)值,調(diào)用函數(shù)時可不傳該默認(rèn)參數(shù)的值(注意:所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前,包括函數(shù)定義和調(diào)用)
?函數(shù)調(diào)用時,如果為缺省參數(shù)傳值則修改默認(rèn)參數(shù)值, 否則使用這個默認(rèn)值
7.2.4.不定長參數(shù)
不定長參數(shù)也叫可變參數(shù). 用于不確定調(diào)用的時候會傳遞多少個參數(shù)(不傳參也可以)的場景.
不定長參數(shù)的類型: ? ? ?①位置傳遞 ? ? ?②關(guān)鍵字傳遞
1.位置傳遞
?傳進(jìn)的所有參數(shù)都會被args變量收集,它會根據(jù)傳進(jìn)參數(shù)的位置合并為一個元組(tuple),args是元組類型,這就是位置傳遞
2.關(guān)鍵字傳遞
?參數(shù)是“鍵=值”形式的形式的情況下, 所有的“鍵=值”都會被kwargs接受, 同時會根據(jù)“鍵=值”組成字典.
7.2.5.函數(shù)作為參數(shù)傳遞
7.3.匿名函數(shù)
函數(shù)的定義中
- def關(guān)鍵字,可以定義帶有名稱的函數(shù)
- lambda關(guān)鍵字,可以定義匿名函數(shù)(無名稱)
?有名稱的函數(shù),可以基于名稱重復(fù)使用。?無名稱的匿名函數(shù),只可臨時使用一次
匿名函數(shù)定義語法:
- lambda 是關(guān)鍵字,表示定義匿名函數(shù)
- 傳入?yún)?shù)表示匿名函數(shù)的形式參數(shù),如:x, y 表示接收2個形式參數(shù)
- 函數(shù)體,就是函數(shù)的執(zhí)行邏輯,要注意:只能寫一行,無法寫多行代碼
八:Python文件操作
8.1.文件的讀取
mode常用的三種基礎(chǔ)訪問模式:
模式 |
描述 |
r |
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。 |
w |
打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,原有內(nèi)容會被刪除。 如果該文件不存在,創(chuàng)建新文件。 |
a |
打開一個文件用于追加。如果該文件已存在,新的內(nèi)容將會被寫入到已有內(nèi)容之后。 如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
操作 |
功能 |
文件對象?=?open(file,?mode,?encoding) |
打開文件獲得文件對象 |
文件對象.read(num) |
讀取指定長度字節(jié) 不指定num讀取文件全部 |
文件對象.readline() |
讀取一行 |
文件對象.readlines() |
讀取全部行,得到列表 |
for?line?in?文件對象 |
for循環(huán)文件行,一次循環(huán)得到一行數(shù)據(jù) |
文件對象.close() |
關(guān)閉文件對象 |
with?open()?as?f |
通過with?open語法打開文件,可以自動關(guān)閉 |
8.2.文件的寫入
- ?直接調(diào)用write,內(nèi)容并未真正寫入文件,而是會積攢在程序的內(nèi)存中,稱之為緩沖區(qū)
- 當(dāng)調(diào)用flush的時候,內(nèi)容會真正寫入文件
- 這樣做會頻繁的操作硬盤,導(dǎo)致效率下降
九:Python異常、模塊與包
9.1.異常的捕獲
在可能發(fā)生異常的地方,進(jìn)行捕獲。當(dāng)異常出現(xiàn)的時候,提供解決方式,而不是任由其導(dǎo)致程序無法運(yùn)行。
?異常的種類多種多樣,如果想要不管什么類型的異常都能捕獲到,那么使用:except Exception as e:
9.2.Python模塊
模塊(Module),是一個 Python 文件,以 .py 結(jié)尾. ?模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼
模塊的導(dǎo)入方式:
?常用的組合形式如:
- import 模塊名
- from 模塊名 import 類、變量、方法等
- from 模塊名 import *
- import 模塊名 as 別名
- from 模塊名 import 功能名 as 別名
自定義模塊:
每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字
在實(shí)際開發(fā)中,當(dāng)一個開發(fā)人員編寫完一個模塊后,為了讓模塊能夠在項(xiàng)目中達(dá)到想要的效果, 這個開發(fā)人員會自行在py文件中添加一些測試信息,但是在模塊導(dǎo)入的時候都會自動執(zhí)行`test`函數(shù)的調(diào)用
解決方案:
如果一個模塊文件中有`_ _all_ _`變量,當(dāng)使用`from xxx import *`導(dǎo)入時,只能導(dǎo)入這個列表中的元素
9.3.Python包
從物理上看,包就是一個文件夾,在該文件夾下自動創(chuàng)建了一個 _ _init_ _.py 文件,該文件夾可用于包含多個模塊文件 從邏輯上看,包的本質(zhì)依然是模塊
?當(dāng)我們的模塊文件越來越多時,包可以幫助我們管理這些模塊, 包的作用就是包含多個模塊,但包的本質(zhì)依然是模塊
導(dǎo)入包:
1.import 包名.模塊名? ?調(diào)用:包名.模塊名.目標(biāo)
2.from 包名 import *?必須在`__init__.py`文件中添加`__all__ = []`,控制允許導(dǎo)入的模塊列表
十:面向?qū)ο?/h3>
10.1.成員方法
?在Python中,如果將函數(shù)定義為class(類)的成員,那么函數(shù)會稱之為:方法
?方法和函數(shù)功能一樣, 有傳入?yún)?shù),有返回值,只是方法的使用格式不同:
?在類中定義成員方法和定義函數(shù)基本一致,但仍有細(xì)微區(qū)別:
?可以看到,在方法定義的參數(shù)列表中,有一個:self關(guān)鍵字?,它是成員方法定義的時候,必須填寫的,但是傳參的時候可以忽略它
- 它用來表示類對象自身的意思
- 當(dāng)我們使用類對象調(diào)用方法的是,self會自動被python傳入
- 在方法內(nèi)部,想要訪問類的成員變量,必須使用self
10.2.構(gòu)造方法
基于類創(chuàng)建對象的語法:
?Python類可以使用:_ _init_ _()方法,稱之為構(gòu)造方法
在創(chuàng)建類對象(構(gòu)造類)的時候,會自動執(zhí)行,并將傳入?yún)?shù)自動傳遞給__init__方法使用
10.3.封裝
面向?qū)ο缶幊?,是基于模板(類)去?chuàng)建實(shí)體(對象),使用對象完成功能開發(fā)
面向?qū)ο蟀?大主要特性:封裝 繼承 多態(tài)
將現(xiàn)實(shí)世界事物在類中描述為屬性和方法,即為封裝
?現(xiàn)實(shí)事物有部分屬性和行為是不公開對使用者開放的。同樣在類中描述屬性和方法的時候也需要達(dá)到這個要求,就需要定義私有成員了
成員變量和成員方法的命名均以_ _作為開頭即可
?私有成員無法被類對象使用,但是可以被其它的成員使用。
10.4.繼承
繼承:將從父類那里繼承(復(fù)制)來成員變量和成員方法(不含私有)
單繼承:
?
多繼承:
?多個父類中,如果有同名的成員,那么默認(rèn)以繼承順序(從左到右)為優(yōu)先級
pass是占位語句,用來保證函數(shù)(方法)或類定義的完整性,表示無內(nèi)容,空的意思
復(fù)寫:
子類繼承父類的成員屬性和成員方法后,如果對其“不滿意”,那么可以進(jìn)行復(fù)寫。即在子類中重新定義同名的屬性或方法即可
?一旦復(fù)寫父類成員,那么類對象調(diào)用成員的時候,就會調(diào)用復(fù)寫后的新成員 如果需要使用被復(fù)寫的父類的成員,需要特殊的調(diào)用方式:
?注意:只能在子類內(nèi)調(diào)用父類的同名成員,子類的類對象直接調(diào)用會調(diào)用子類復(fù)寫的成員
?10.5.多態(tài)
多態(tài):指的是完成某個行為時,使用不同的對象會得到不同的狀態(tài),多態(tài)常作用在繼承關(guān)系上
?抽象類(接口):含有抽象方法的類稱之為抽象類
抽象方法:方法體是空實(shí)現(xiàn)的(pass)稱之為抽象方法文章來源:http://www.zghlxwxcb.cn/news/detail-843507.html
抽象類多用于做頂層設(shè)計(jì)(設(shè)計(jì)標(biāo)準(zhǔn)),以便子類做具體實(shí)現(xiàn),要求子類必須復(fù)寫(實(shí)現(xiàn))父類的一些方法文章來源地址http://www.zghlxwxcb.cn/news/detail-843507.html
目錄
一:簡介:
二:Python基礎(chǔ)語法
2.1.字面量
2.2.注釋
2.3.數(shù)據(jù)類型轉(zhuǎn)換
2.4.標(biāo)識符
2.5.運(yùn)算符
2.6.字符串
2.6.1.字符串的三種定義方式
2.6.2.字符串拼接
2.6.3.字符串格式化
2.6.4.格式化的精度控制
2.6.5.字符串快速格式化
2.7.數(shù)據(jù)輸入
三:python判斷語句
3.1.if語句的基本格式
3.2.if elif else語句
四:python循環(huán)語句
4.1.while循環(huán)
4.2.for循環(huán)
?4.3.range語句
五:Python函數(shù)
六:Python數(shù)據(jù)容器
6.1.list(列表)
6.2.tuple(元組)
6.3.str(字符串)
6.4.序列的切片
6.5.set(集合)
6.6.dict(字典)
七:Python函數(shù)進(jìn)階
7.1.函數(shù)多返回值
7.2.函數(shù)多種傳參方式
7.2.1.位置參數(shù)
7.2.2.關(guān)鍵字參數(shù)
7.2.3.缺省參數(shù)
7.2.4.不定長參數(shù)
7.2.5.函數(shù)作為參數(shù)傳遞
7.3.匿名函數(shù)
八:Python文件操作
8.1.文件的讀取
8.2.文件的寫入
九:Python異常、模塊與包
9.1.異常的捕獲
9.2.Python模塊
9.3.Python包
十:面向?qū)ο?/p>
10.1.成員方法
10.2.構(gòu)造方法
10.3.封裝
10.4.繼承
?10.5.多態(tài)
一:簡介:
Python 是一種解釋型、面向?qū)ο?/strong>的語言
Python的語法和動態(tài)類型,以及解釋性語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的編程語言
二:Python基礎(chǔ)語法
2.1.字面量
字面量:在代碼中,被寫下來的的固定的值,稱之為字面量
Python中有6種常用的值(數(shù)據(jù))的類型
注意:type()語句可以查看變量存儲的數(shù)據(jù)類型
2.2.注釋
單行注釋:以 #開頭,#右邊 的所有文字當(dāng)作說明,而不是真正要執(zhí)行的程序,起輔助說明作用
注意:#號和注釋內(nèi)容一般建議以一個空格隔開
多行注釋:?以 一對三個雙引號 引起來
2.3.數(shù)據(jù)類型轉(zhuǎn)換
語句(函數(shù)) |
說明 |
int(x) |
將x轉(zhuǎn)換為一個整數(shù) |
float(x) |
將x轉(zhuǎn)換為一個浮點(diǎn)數(shù) |
str(x) |
將對象?x?轉(zhuǎn)換為字符串 |
2.4.標(biāo)識符
標(biāo)識符: 是用戶在編程的時候所使用的一系列名字,用于給變量、類、方法等命名
標(biāo)識符命名中,只允許出現(xiàn): 英文 中文 數(shù)字 下劃線(_) 這四類元素。
注意:不推薦使用中文,數(shù)字不可以開頭,且不可使用關(guān)鍵字
2.5.運(yùn)算符
算術(shù)(數(shù)學(xué))運(yùn)算符:
運(yùn)算符 |
描述 |
實(shí)例 |
+ |
加 |
兩個對象相加?a?+?b?輸出結(jié)果?30 |
- |
減 |
得到負(fù)數(shù)或是一個數(shù)減去另一個數(shù)?a?-?b?輸出結(jié)果?-10 |
* |
乘 |
兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串?a?*?b?輸出結(jié)果?200 |
/ |
除 |
b?/?a?輸出結(jié)果?2 |
// |
取整除 |
返回商的整數(shù)部分?9//2?輸出結(jié)果?4?,?9.0//2.0?輸出結(jié)果?4.0 |
% |
取余 |
返回除法的余數(shù)?b?%?a?輸出結(jié)果?0 |
** |
指數(shù) |
a**b?為10的20次方,?輸出結(jié)果?100000000000000000000 |
復(fù)合賦值運(yùn)算符:
運(yùn)算符 |
描述 |
實(shí)例 |
+= |
加法賦值運(yùn)算符 |
c?+=?a?等效于?c?=?c?+?a |
-= |
減法賦值運(yùn)算符 |
c?-=?a?等效于?c?=?c?-?a |
*= |
乘法賦值運(yùn)算符 |
c?*=?a?等效于?c?=?c?*?a |
/= |
除法賦值運(yùn)算符 |
c?/=?a?等效于?c?=?c?/?a |
%= |
取模賦值運(yùn)算符 |
c?%=?a?等效于?c?=?c?%?a |
**= |
冪賦值運(yùn)算符 |
c?**=?a?等效于?c?=?c?**?a |
//= |
取整除賦值運(yùn)算符 |
c?//=?a?等效于?c?=?c?//?a |
2.6.字符串
2.6.1.字符串的三種定義方式
單引號定義法: 雙引號定義法: 三引號定義法:
其中,單引號定義法,可以內(nèi)含雙引號; 雙引號定義法,可以內(nèi)含單引號 ;并且可以使用轉(zhuǎn)義字符(\)來將引號解除效用,變成普通字符串
2.6.2.字符串拼接
注意:字符串無法和非字符串變量進(jìn)行拼接
?默認(rèn)print語句輸出內(nèi)容會自動換行,在print語句中,加上 end=''?即可輸出不換行了
2.6.3.字符串格式化
我們可以通過如下語法,完成字符串和變量的快速拼接
格式符號 |
轉(zhuǎn)化 |
%s |
將內(nèi)容轉(zhuǎn)換成字符串,放入占位位置 |
%d |
將內(nèi)容轉(zhuǎn)換成整數(shù),放入占位位置 |
%f |
將內(nèi)容轉(zhuǎn)換成浮點(diǎn)型,放入占位位置 |
如下代碼,完成字符串、整數(shù)、浮點(diǎn)數(shù),三種不同類型變量的占位
?其中,% 表示占位符,且在無需使用變量進(jìn)行數(shù)據(jù)存儲的時候,可以直接格式化表達(dá)式(變量的位置放入表達(dá)式),簡化代碼
2.6.4.格式化的精度控制
我們可以使用輔助符號"m.n"來控制數(shù)據(jù)的寬度和精度
m,控制寬度,要求是數(shù)字,如果設(shè)置的寬度小于數(shù)字自身,則不生效
.n,控制小數(shù)點(diǎn)精度,要求是數(shù)字,會進(jìn)行小數(shù)的四舍五入
示例: %5d:表示將整數(shù)的寬度控制在5位,如數(shù)字11,就會變成:[空格][空格][空格]11,用三個空格補(bǔ)足寬度python自學(xué)能行嗎。
%5.2f:表示將寬度控制為5,將小數(shù)點(diǎn)精度設(shè)置為2 。小數(shù)點(diǎn)和小數(shù)部分也算入寬度計(jì)算。如,對11.345設(shè)置了%7.2f 后,結(jié)果是:[空格][空格]11.35。2個空格補(bǔ)足寬度,小數(shù)部分限制2位精度后,四舍五入為 .35
%.2f:表示不限制寬度,只設(shè)置小數(shù)點(diǎn)精度為2,如11.345設(shè)置%.2f后,結(jié)果是11.35
2.6.5.字符串快速格式化
通過語法:f"內(nèi)容{變量}"的格式來快速格式化
?注意:這種寫法不做精度控制,不理會類型
2.7.數(shù)據(jù)輸入
使用input()語句可以從鍵盤獲取輸入
?注意:無論鍵盤輸入什么類型的數(shù)據(jù),獲取到的數(shù)據(jù)永遠(yuǎn)都是字符串類型
三:python判斷語句
3.1.if語句的基本格式
歸屬于if判斷的代碼語句塊,需在前方填充4個空格縮進(jìn)
Python通過縮進(jìn)判斷代碼塊的歸屬關(guān)系。
3.2.if elif else語句
四:python循環(huán)語句
4.1.while循環(huán)
4.2.for循環(huán)
?4.3.range語句
用于獲得一個數(shù)字序列
語法1:range(num)
????????????????????????從0開始,到num結(jié)束(不含num本身)
語法2:range(num1, num2)
????????????????????????從0開始,到num結(jié)束(不含num本身)
?語法3:range(num1, num2, step)
????????????????????????從0開始,到num結(jié)束(不含num本身)
五:Python函數(shù)
函數(shù):是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)特定功能的代碼段
函數(shù)的定義:
?注意:如果函數(shù)沒有使用return語句返回數(shù)據(jù),會返回None這個字面量;在if判斷中,None等同于False;定義變量,但暫時不需要變量有具體值,可以用None來代替
使用 global關(guān)鍵字 可以在函數(shù)內(nèi)部聲明變量為全局變量
六:Python數(shù)據(jù)容器
一種可以容納多份數(shù)據(jù)的數(shù)據(jù)類型,容納的每一份數(shù)據(jù)稱之為1個元素。 每一個元素,可以是任意類型的數(shù)據(jù)
6.1.list(列表)
基本語法:??
列表的方法:
編號 |
使用方式 |
作用 |
1 |
列表.append(元素) |
向列表的尾部追加一個元素 |
2 |
列表.extend(容器) |
將數(shù)據(jù)容器的內(nèi)容(無結(jié)構(gòu))依次取出,追加到列表尾部 |
3 |
列表.insert(下標(biāo),?元素) |
在指定下標(biāo)處,插入指定的元素 |
4 |
del?列表[下標(biāo)] |
刪除列表指定下標(biāo)元素 |
5 |
列表.pop(下標(biāo)) |
刪除列表指定下標(biāo)元素(能得到返回值) |
6 |
列表.remove(元素) |
從前向后,刪除此元素第一個匹配項(xiàng) |
7 |
列表.clear() |
清空列表 |
8 |
列表.count(元素) |
統(tǒng)計(jì)此元素在列表中出現(xiàn)的次數(shù) |
9 |
列表.index(元素) |
查找指定元素在列表的下標(biāo) 找不到報錯ValueError |
10 |
len(列表) |
統(tǒng)計(jì)容器內(nèi)有多少元素 |
列表特點(diǎn):
6.2.tuple(元組)
基本語法:
?注意:元組只有一個數(shù)據(jù),這個數(shù)據(jù)后面要添加逗號
元組的方法:
編號 |
方法 |
作用 |
1 |
index() |
查找某個數(shù)據(jù),如果數(shù)據(jù)存在返回對應(yīng)的下標(biāo),否則報錯 |
2 |
count() |
統(tǒng)計(jì)某個數(shù)據(jù)在當(dāng)前元組出現(xiàn)的次數(shù) |
3 |
len(元組) |
統(tǒng)計(jì)元組內(nèi)的元素個數(shù) |
元組特點(diǎn):
6.3.str(字符串)
字符串的方法:
編號 |
操作 |
說明 |
1 |
字符串[下標(biāo)] |
根據(jù)下標(biāo)索引取出特定位置字符 |
2 |
字符串.index(字符串) |
查找給定字符的第一個匹配項(xiàng)的下標(biāo) |
3 |
字符串.replace(字符串1,?字符串2) |
將字符串內(nèi)的全部字符串1,替換為字符串2 不會修改原字符串,而是得到一個新的 |
4 |
字符串.split(字符串) |
按照給定字符串,對字符串進(jìn)行分隔 不會修改原字符串,而是得到一個新的列表 |
5 |
字符串.strip() 字符串.strip(字符串) |
移除首尾的空格和換行符 或指定字符串 |
6 |
字符串.count(字符串) |
統(tǒng)計(jì)字符串內(nèi)某字符串的出現(xiàn)次數(shù) |
7 |
len(字符串) |
統(tǒng)計(jì)字符串的字符個數(shù) |
字符串特點(diǎn):
字符串容器可以容納的類型是單一的,只能是字符串類型。
字符串不可以修改,如果必須要修改,只能得到一個新的字符串,舊的字符串是無法修改
6.4.序列的切片
序列是指:內(nèi)容連續(xù)、有序,可使用下標(biāo)索引的一類數(shù)據(jù)容器
列表、元組、字符串,均可以可以視為序列
語法:序列[起始下標(biāo):結(jié)束下標(biāo):步長]
表示從序列中,從指定位置開始,依次取出元素,到指定位置結(jié)束,得到一個新序列
- 起始下標(biāo)表示從何處開始,可以留空,留空視作從頭開始
- 結(jié)束下標(biāo)(不含)表示何處結(jié)束,可以留空,留空視作截取到結(jié)尾
- 步長表示,依次取元素的間隔
- 步長為負(fù)數(shù)表示,反向?。ㄗ⒁猓鹗枷聵?biāo)和結(jié)束下標(biāo)也要反向標(biāo)記)
6.5.set(集合)
基本語法:
集合的方法:
編號 |
操作 |
說明 |
1 |
集合.add(元素) |
集合內(nèi)添加一個元素 |
2 |
集合.remove(元素) |
移除集合內(nèi)指定的元素 |
3 |
集合.pop() |
從集合中隨機(jī)刪除一個元素并返回 |
4 |
集合.clear() |
將集合清空 |
5 |
集合1.difference(集合2) |
得到一個新集合,內(nèi)含2個集合的差集 原有的2個集合內(nèi)容不變 |
6 |
集合1.difference_update(集合2) |
在集合1中,刪除集合2中存在的元素 集合1被修改,集合2不變 |
7 |
集合1.union(集合2) |
得到1個新集合,內(nèi)含2個集合的全部元素 原有的2個集合內(nèi)容不變 |
8 |
len(集合) |
得到一個整數(shù),記錄了集合的元素數(shù)量 |
集合特點(diǎn):
相較于列表、元組、字符串來說,不支持元素的重復(fù)(自帶去重功能)、并且內(nèi)容無序
6.6.dict(字典)
字典定義?
?字典的常用操作:
編號 |
操作 |
說明 |
1 |
字典[Key] |
獲取指定Key對應(yīng)的Value值 |
2 |
字典[Key]?=?Value |
添加或更新鍵值對 |
3 |
字典.pop(Key) |
取出Key對應(yīng)的Value并在字典內(nèi)刪除此Key的鍵值對 |
4 |
字典.clear() |
清空字典 |
5 |
字典.keys() |
獲取字典的全部Key,可用于for循環(huán)遍歷字典 |
6 |
len(字典) |
計(jì)算字典內(nèi)的元素數(shù)量 |
字典特點(diǎn):
- 鍵值對的Key和Value可以是任意類型(Key不可為字典)
- 字典內(nèi)Key不允許重復(fù),重復(fù)添加等同于覆蓋原有數(shù)據(jù)
- 字典不可用下標(biāo)索引,而是通過Key檢索Value
6.7.數(shù)據(jù)容器的通用操作
數(shù)據(jù)容器特點(diǎn)對比:
列表 |
元組 |
字符串 |
集合 |
字典 |
|
元素數(shù)量 |
支持多個 |
支持多個 |
支持多個 |
支持多個 |
支持多個 |
元素類型 |
任意 |
任意 |
僅字符 |
任意 |
Key:Value Key:除字典外任意類型 Value:任意類型 |
下標(biāo)索引 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
重復(fù)元素 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
可修改性 |
支持 |
不支持 |
不支持 |
支持 |
支持 |
數(shù)據(jù)有序 |
是 |
是 |
是 |
否 |
否 |
使用場景 |
可修改、可重復(fù)的一批數(shù)據(jù)記錄場景 |
不可修改、可重復(fù)的一批數(shù)據(jù)記錄場景 |
一串字符的記錄場景 |
不可重復(fù)的數(shù)據(jù)記錄場景 |
以Key檢索Value的數(shù)據(jù)記錄場景 |
容器通用功能:
功能 |
描述 |
通用for循環(huán) |
遍歷容器(字典是遍歷key) |
max |
容器內(nèi)最大元素 |
min() |
容器內(nèi)最小元素 |
len() |
容器元素個數(shù) |
list() |
轉(zhuǎn)換為列表 |
tuple() |
轉(zhuǎn)換為元組 |
str() |
轉(zhuǎn)換為字符串 |
set() |
轉(zhuǎn)換為集合 |
sorted(序列,?[reverse=True]) |
排序,reverse=True表示降序 得到一個排好序的列表 |
七:Python函數(shù)進(jìn)階
7.1.函數(shù)多返回值
?按照返回值的順序,寫對應(yīng)順序的多個變量接收即可 變量之間用逗號隔開
7.2.函數(shù)多種傳參方式
7.2.1.位置參數(shù)
調(diào)用函數(shù)時根據(jù)函數(shù)定義的參數(shù)位置來傳遞參
?傳遞的參數(shù)和定義的參數(shù)的順序及個數(shù)必須一致
7.2.2.關(guān)鍵字參數(shù)
函數(shù)調(diào)用時通過“鍵=值”形式傳遞參數(shù)
7.2.3.缺省參數(shù)
缺省參數(shù)也叫默認(rèn)參數(shù),用于定義函數(shù),為參數(shù)提供默認(rèn)值,調(diào)用函數(shù)時可不傳該默認(rèn)參數(shù)的值(注意:所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前,包括函數(shù)定義和調(diào)用)
?函數(shù)調(diào)用時,如果為缺省參數(shù)傳值則修改默認(rèn)參數(shù)值, 否則使用這個默認(rèn)值
7.2.4.不定長參數(shù)
不定長參數(shù)也叫可變參數(shù). 用于不確定調(diào)用的時候會傳遞多少個參數(shù)(不傳參也可以)的場景.
不定長參數(shù)的類型: ? ? ?①位置傳遞 ? ? ?②關(guān)鍵字傳遞
1.位置傳遞
?傳進(jìn)的所有參數(shù)都會被args變量收集,它會根據(jù)傳進(jìn)參數(shù)的位置合并為一個元組(tuple),args是元組類型,這就是位置傳遞
2.關(guān)鍵字傳遞
?參數(shù)是“鍵=值”形式的形式的情況下, 所有的“鍵=值”都會被kwargs接受, 同時會根據(jù)“鍵=值”組成字典.
7.2.5.函數(shù)作為參數(shù)傳遞
7.3.匿名函數(shù)
函數(shù)的定義中
- def關(guān)鍵字,可以定義帶有名稱的函數(shù)
- lambda關(guān)鍵字,可以定義匿名函數(shù)(無名稱)
?有名稱的函數(shù),可以基于名稱重復(fù)使用。?無名稱的匿名函數(shù),只可臨時使用一次
匿名函數(shù)定義語法:
- lambda 是關(guān)鍵字,表示定義匿名函數(shù)
- 傳入?yún)?shù)表示匿名函數(shù)的形式參數(shù),如:x, y 表示接收2個形式參數(shù)
- 函數(shù)體,就是函數(shù)的執(zhí)行邏輯,要注意:只能寫一行,無法寫多行代碼
八:Python文件操作
8.1.文件的讀取
mode常用的三種基礎(chǔ)訪問模式:
模式 |
描述 |
r |
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。 |
w |
打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,原有內(nèi)容會被刪除。 如果該文件不存在,創(chuàng)建新文件。 |
a |
打開一個文件用于追加。如果該文件已存在,新的內(nèi)容將會被寫入到已有內(nèi)容之后。 如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
操作 |
功能 |
文件對象?=?open(file,?mode,?encoding) |
打開文件獲得文件對象 |
文件對象.read(num) |
讀取指定長度字節(jié) 不指定num讀取文件全部 |
文件對象.readline() |
讀取一行 |
文件對象.readlines() |
讀取全部行,得到列表 |
for?line?in?文件對象 |
for循環(huán)文件行,一次循環(huán)得到一行數(shù)據(jù) |
文件對象.close() |
關(guān)閉文件對象 |
with?open()?as?f |
通過with?open語法打開文件,可以自動關(guān)閉 |
8.2.文件的寫入
- ?直接調(diào)用write,內(nèi)容并未真正寫入文件,而是會積攢在程序的內(nèi)存中,稱之為緩沖區(qū)
- 當(dāng)調(diào)用flush的時候,內(nèi)容會真正寫入文件
- 這樣做會頻繁的操作硬盤,導(dǎo)致效率下降
九:Python異常、模塊與包
9.1.異常的捕獲
在可能發(fā)生異常的地方,進(jìn)行捕獲。當(dāng)異常出現(xiàn)的時候,提供解決方式,而不是任由其導(dǎo)致程序無法運(yùn)行。
?異常的種類多種多樣,如果想要不管什么類型的異常都能捕獲到,那么使用:except Exception as e:
9.2.Python模塊
模塊(Module),是一個 Python 文件,以 .py 結(jié)尾. ?模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼
模塊的導(dǎo)入方式:
?常用的組合形式如:
- import 模塊名
- from 模塊名 import 類、變量、方法等
- from 模塊名 import *
- import 模塊名 as 別名
- from 模塊名 import 功能名 as 別名
自定義模塊:
每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字
在實(shí)際開發(fā)中,當(dāng)一個開發(fā)人員編寫完一個模塊后,為了讓模塊能夠在項(xiàng)目中達(dá)到想要的效果, 這個開發(fā)人員會自行在py文件中添加一些測試信息,但是在模塊導(dǎo)入的時候都會自動執(zhí)行`test`函數(shù)的調(diào)用
解決方案:
如果一個模塊文件中有`_ _all_ _`變量,當(dāng)使用`from xxx import *`導(dǎo)入時,只能導(dǎo)入這個列表中的元素
9.3.Python包
從物理上看,包就是一個文件夾,在該文件夾下自動創(chuàng)建了一個 _ _init_ _.py 文件,該文件夾可用于包含多個模塊文件 從邏輯上看,包的本質(zhì)依然是模塊
?當(dāng)我們的模塊文件越來越多時,包可以幫助我們管理這些模塊, 包的作用就是包含多個模塊,但包的本質(zhì)依然是模塊
導(dǎo)入包:
1.import 包名.模塊名? ?調(diào)用:包名.模塊名.目標(biāo)
2.from 包名 import *?必須在`__init__.py`文件中添加`__all__ = []`,控制允許導(dǎo)入的模塊列表
十:面向?qū)ο?/h3>
10.1.成員方法
?在Python中,如果將函數(shù)定義為class(類)的成員,那么函數(shù)會稱之為:方法
?方法和函數(shù)功能一樣, 有傳入?yún)?shù),有返回值,只是方法的使用格式不同:
?在類中定義成員方法和定義函數(shù)基本一致,但仍有細(xì)微區(qū)別:
?可以看到,在方法定義的參數(shù)列表中,有一個:self關(guān)鍵字?,它是成員方法定義的時候,必須填寫的,但是傳參的時候可以忽略它
- 它用來表示類對象自身的意思
- 當(dāng)我們使用類對象調(diào)用方法的是,self會自動被python傳入
- 在方法內(nèi)部,想要訪問類的成員變量,必須使用self
10.2.構(gòu)造方法
基于類創(chuàng)建對象的語法:
?Python類可以使用:_ _init_ _()方法,稱之為構(gòu)造方法
在創(chuàng)建類對象(構(gòu)造類)的時候,會自動執(zhí)行,并將傳入?yún)?shù)自動傳遞給__init__方法使用
10.3.封裝
面向?qū)ο缶幊蹋腔谀0澹悾┤?chuàng)建實(shí)體(對象),使用對象完成功能開發(fā)
面向?qū)ο蟀?大主要特性:封裝 繼承 多態(tài)
將現(xiàn)實(shí)世界事物在類中描述為屬性和方法,即為封裝
?現(xiàn)實(shí)事物有部分屬性和行為是不公開對使用者開放的。同樣在類中描述屬性和方法的時候也需要達(dá)到這個要求,就需要定義私有成員了
成員變量和成員方法的命名均以_ _作為開頭即可
?私有成員無法被類對象使用,但是可以被其它的成員使用。
10.4.繼承
繼承:將從父類那里繼承(復(fù)制)來成員變量和成員方法(不含私有)
單繼承:
?
多繼承:
?多個父類中,如果有同名的成員,那么默認(rèn)以繼承順序(從左到右)為優(yōu)先級
pass是占位語句,用來保證函數(shù)(方法)或類定義的完整性,表示無內(nèi)容,空的意思
復(fù)寫:
子類繼承父類的成員屬性和成員方法后,如果對其“不滿意”,那么可以進(jìn)行復(fù)寫。即在子類中重新定義同名的屬性或方法即可
?一旦復(fù)寫父類成員,那么類對象調(diào)用成員的時候,就會調(diào)用復(fù)寫后的新成員 如果需要使用被復(fù)寫的父類的成員,需要特殊的調(diào)用方式:
?注意:只能在子類內(nèi)調(diào)用父類的同名成員,子類的類對象直接調(diào)用會調(diào)用子類復(fù)寫的成員
?10.5.多態(tài)
多態(tài):指的是完成某個行為時,使用不同的對象會得到不同的狀態(tài),多態(tài)常作用在繼承關(guān)系上
?抽象類(接口):含有抽象方法的類稱之為抽象類
抽象方法:方法體是空實(shí)現(xiàn)的(pass)稱之為抽象方法
抽象類多用于做頂層設(shè)計(jì)(設(shè)計(jì)標(biāo)準(zhǔn)),以便子類做具體實(shí)現(xiàn),要求子類必須復(fù)寫(實(shí)現(xiàn))父類的一些方法
到了這里,關(guān)于python 基礎(chǔ) 詳細(xì),python 基礎(chǔ)入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!