《Python編程從入門(mén)到實(shí)踐》6-9章總結(jié)
作者 Eric Matthes 著, 袁國(guó)忠 譯
中國(guó)工信出版集團(tuán),人民郵電出版社
章節(jié)內(nèi)容
- 字典
- 用戶輸入+while循環(huán)
- 函數(shù)
- 類
ch6 字典
定義
- {},鍵值對(duì)
使用字典
alien_0={'color':'green','points':5}
- 添加
- 刪除:del
遍歷字典
for key,value in user_0.items():
print(key)
print(value)
- 排序: sorted
- .keys()
- .values()
嵌套字典
- 字典 in 列表
alien_0={'color':'green','points':5}
alien_1={'color':'red','points':50}
alien_2={'color':'yellow','points':10}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
print(alien)
列表 in 字典
字典 in 字典
不推薦這種方式,可以考慮 字典in列表 進(jìn)行使用
ch7 用戶輸入和while循環(huán)
input vs raw_input()
- input("hint by words")
- int() # enter number
- 求余%
while
- 退出條件 while condition
- break
- continue
- ctrl+c
千萬(wàn)注意循環(huán)跳出條件,單元測(cè)試的主要問(wèn)題點(diǎn)
while 處理列表和字典
- for vs while
- for 會(huì)預(yù)制循環(huán)條件,不應(yīng)修改循環(huán)對(duì)象
- while 用于調(diào)整循環(huán)遍歷對(duì)象時(shí)的循環(huán)處理
while 刪除指定元素
- []
pets = ['dog','cat,'dog','goldfish','cat','rabbit']
while 'cat' in pets:
pets.remove('cat')
ch8 函數(shù)
def functionname(var):
code_body
functionname(in_var)
參數(shù)
- 形參
- 實(shí)參
實(shí)參就是形參的取值,多數(shù)人不區(qū)分兩者
參數(shù)傳遞
- 位置實(shí)參
注意傳遞順序
- 關(guān)鍵字實(shí)參
傳遞時(shí)指明形參與實(shí)參的對(duì)應(yīng)
- 默認(rèn)值
- 形參未賦值時(shí)的默認(rèn)值
- 默認(rèn)值要往后放,不能前面有默認(rèn)值,而后面沒(méi)有,順序賦值
返回值
- return
- 返回字典
入?yún)榱斜?/h3>
- 類似于C的數(shù)組、指針
- 需要禁止修改入?yún)?,將列表用切片方式傳入副?/li>
- 主要考慮點(diǎn)是效率:效率會(huì)因?yàn)閮?nèi)存使用而增加時(shí)間成本
- 入?yún)樵M,可實(shí)現(xiàn)可變參數(shù)的輸入(量的變化)
- 位置實(shí)參與任意實(shí)參結(jié)合
即位置實(shí)參與元組參數(shù)的結(jié)合,注意默認(rèn)順序賦值的原因,需要將變參(任意實(shí)參)放在最后一個(gè)形參
- 任意數(shù)量的關(guān)鍵字實(shí)參
def fun(invar1,**invar2)
引入模塊
函數(shù)存儲(chǔ)在模塊
即位置實(shí)參與元組參數(shù)的結(jié)合,注意默認(rèn)順序賦值的原因,需要將變參(任意實(shí)參)放在最后一個(gè)形參
def fun(invar1,**invar2)
存儲(chǔ)為a.py
新的b.py中調(diào)用模塊a
import a
import module_name
module_name.function_name()
from module_name import function_name
from module_name import fun1, fun2, fun3
- as 別名
import module_name as newmodulename
- 導(dǎo)入所有:from module_name import *
函數(shù)編寫(xiě)指南
- 小寫(xiě)+下劃線,避免大寫(xiě)
- 形參等號(hào)兩邊不要留空格
- 相鄰函數(shù)的定義,隔兩空行
ch9 類 class
關(guān)鍵詞: 面向?qū)ο?,?shí)例
創(chuàng)建和使用類
命名類首字母大寫(xiě)
全部小寫(xiě)的,是函數(shù)和變量
__init__()
if __name__ == '__main__':
#測(cè)試使用
- 注意self的使用,外部使用類時(shí),self參數(shù)相當(dāng)于自動(dòng)隱藏
使用類
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
long_name = str(self.year)+' ' + self.make + ' ' + self.model
return long_name.title()
#%%
if __name__ == '__main__':
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
- 可以設(shè)置方法來(lái)操作屬性值
- 但是要注意到:有權(quán)限訪問(wèn)到程序的人,都可以直接訪問(wèn)屬性值并進(jìn)行修改。因此,需要注意細(xì)節(jié),控制好訪問(wèn)權(quán)限
繼承
- super.init
- 父類、子類需在一個(gè)文件內(nèi)
- import 也是可以引入的,后文中有專門(mén)的類導(dǎo)入
import BookRC as bc
class EECar(bc.Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
if __name__=="__main__":
neweecar = EECar('ford','yibo',2014)
print(neweecar.get_descriptive_name())
- 重寫(xiě)父類的方法名
同名重寫(xiě)即可,根據(jù)函數(shù)作用域即可實(shí)現(xiàn)子類使用新的方法,不影響父類的同名方法
- 實(shí)例作為屬性
需要遞進(jìn).進(jìn)行屬性訪問(wèn)
類的導(dǎo)入
from module_file_name import Class_name
# 關(guān)于用戶定義的類、函數(shù),盡量定義清晰,準(zhǔn)確定義與引用
- 導(dǎo)入類與導(dǎo)入模塊的函數(shù)一樣
標(biāo)準(zhǔn)庫(kù)
python給出的標(biāo)準(zhǔn)庫(kù),通常而言,標(biāo)準(zhǔn)的庫(kù)肯定比自己寫(xiě)的效率更好一點(diǎn)
不要自己造輪子,所有程序的輪子,大部分就存在于標(biāo)準(zhǔn)庫(kù)
編碼風(fēng)格
- 類名:駝峰命名法,首字母大寫(xiě),無(wú)下劃線
- 模塊、實(shí)例:小寫(xiě)英文+下劃線
- 類中一個(gè)空行分隔方法
- 模塊中,兩個(gè)空行分隔類