一闷袒、單例模式
單例模式
確保某一個(gè)類只有一個(gè)實(shí)例坑律,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,這個(gè)類稱為單例類囊骤,單例模式是一種對(duì)象創(chuàng)建型模式晃择。
創(chuàng)建單例保證只有一個(gè)對(duì)象
二、異常淘捡。
什么是異常
異常通常指,你的代碼可能在編譯時(shí)沒有錯(cuò)誤,可是運(yùn)行時(shí)會(huì)出現(xiàn)異常藕各。
捕捉異常
捕獲異常是指發(fā)生異常時(shí),最相應(yīng)處理,避免程序崩潰
try:
可能引起異常的代碼
except:
對(duì)異常的處理代碼
結(jié)構(gòu)是
try:
可能引起異常的代碼
except:
對(duì)異常的處理代碼
捕獲異常 try...except...
try:
print("test")
open("123.txt","r")
except TOError:
pass
可能產(chǎn)生異常的代碼要放在try里
pass是錯(cuò)誤時(shí)的處理方法
。
捕獲所有異常
有時(shí)候我們已經(jīng)捕獲了異常但是還會(huì)報(bào)錯(cuò)因?yàn)槲覀儾东@的類型不一樣這個(gè)時(shí)候我們可以用到能捕獲所有異常的代碼 Exception
try:
open("a.txt","r")
except Exception as result
print("捕獲到了異常")
print(“捕獲的異常為”焦除,result)
else
咱們應(yīng)該對(duì)else并不陌生激况,在if中,它的作用是當(dāng)條件不滿足時(shí)執(zhí)行的實(shí)行膘魄;同樣在try…except…中也是如此乌逐,即如果沒有捕獲到異常,那么就執(zhí)行else中的事情
try:
num = 100
print(num)
else:
print("沒有異常真高興")
finally
在程序中创葡,如果一個(gè)段代碼必須要執(zhí)行浙踢,即無(wú)論異常是否產(chǎn)生都要執(zhí)行,那么此時(shí)就需要使用finally灿渴。 比如文件關(guān)閉洛波,釋放鎖,把數(shù)據(jù)庫(kù)連接返還給連接池等
拋出自定義異常
你可以用raise語(yǔ)句來(lái)引發(fā)一個(gè)異常骚露。異常/錯(cuò)誤對(duì)象必須有一個(gè)名字蹬挤,且它們應(yīng)是Error或Exception類的子類
異常處理中拋出異常
拋出異常相當(dāng)于是說:“停止運(yùn)行這個(gè)函數(shù)中的代碼,將程序執(zhí)行轉(zhuǎn)到 except 語(yǔ)句 ”棘幸。
class Test(object):
def __init__(self, switch):
self.switch = switch #開關(guān)
def calc(self, a, b):
try:
return a/b
except Exception as result:
if self.switch:
print("捕獲開啟焰扳,已經(jīng)捕獲到了異常,信息如下:")
print(result)
else:
#重新拋出這個(gè)異常,此時(shí)就不會(huì)被這個(gè)異常處理給捕獲到吨悍,從而觸發(fā)默認(rèn)的異常處理
raise
a = Test(True)
a.calc(11,0)
print("----------------------華麗的分割線----------------")
a.switch = False
a.calc(11,0)
三扫茅、模塊
什么在Python中有一個(gè)概念叫做模塊(module),這個(gè)和C語(yǔ)言中的頭文件以及Java中的包很類似育瓜,比如在Python中要調(diào)用sqrt函數(shù)葫隙,必須用import關(guān)鍵字引入math這個(gè)模塊,下面就來(lái)了解一下Python中的模塊爆雹。
說的通俗點(diǎn):模塊就好比是工具包停蕉,要想使用這個(gè)工具包中的工具(就好比函數(shù)),就需要導(dǎo)入這個(gè)模塊是模塊
import
在Python中用關(guān)鍵字import來(lái)引入某個(gè)模塊钙态,比如要引用模塊math慧起,就可以在文件最開始的地方用import math來(lái)引入。
形如:
import module1,mudule2...
有時(shí)候我們只需要用到模塊中的某個(gè)函數(shù)册倒,只需要引入該函數(shù)即可蚓挤,此時(shí)可以用下面方法實(shí)現(xiàn):
from 模塊名 import 函數(shù)名1,函數(shù)名2....
from … import *
把一個(gè)模塊的所有內(nèi)容全都導(dǎo)入到當(dāng)前的命名空間也是可行的。
as
為模塊更換名字 import 模塊名 as 別名 簡(jiǎn)化代碼編寫
模塊的制作
在Python中驻子,每個(gè)Python文件都可以作為一個(gè)模塊灿意,模塊的名字就是文件的名字。
比如有這樣一個(gè)文件test.py崇呵,在test.py中定義了函數(shù)add
test.py
def add(a,b):
return a+b
調(diào)用自己定義的模塊
import test
result = test.add(11,22)
print(result)