python高級中的單例、異常、模塊

一、單例模式

單例模式
確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,這個(gè)類稱為單例類,單例模式是一種對象創(chuàng)建型模式。

創(chuàng)建單例保證只有一個(gè)對象

二、異常。

什么是異常

異常通常指,你的代碼可能在編譯時(shí)沒有錯(cuò)誤,可是運(yùn)行時(shí)會(huì)出現(xiàn)異常。

捕捉異常

捕獲異常是指發(fā)生異常時(shí),最相應(yīng)處理,避免程序崩潰
try:
可能引起異常的代碼
except:
對異常的處理代碼
結(jié)構(gòu)是

try:
可能引起異常的代碼
except:
對異常的處理代碼 

捕獲異常 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)該對else并不陌生,在if中,它的作用是當(dāng)條件不滿足時(shí)執(zhí)行的實(shí)行;同樣在try…except…中也是如此,即如果沒有捕獲到異常,那么就執(zhí)行else中的事情

try:
    num = 100
    print(num)
else:
    print("沒有異常真高興")  

finally

在程序中,如果一個(gè)段代碼必須要執(zhí)行,即無論異常是否產(chǎn)生都要執(zhí)行,那么此時(shí)就需要使用finally。 比如文件關(guān)閉,釋放鎖,把數(shù)據(jù)庫連接返還給連接池等

拋出自定義異常

你可以用raise語句來引發(fā)一個(gè)異常。異常/錯(cuò)誤對象必須有一個(gè)名字,且它們應(yīng)是Error或Exception類的子類

異常處理中拋出異常

拋出異常相當(dāng)于是說:“停止運(yùn)行這個(gè)函數(shù)中的代碼,將程序執(zhí)行轉(zhuǎn)到 except 語句 ”。

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語言中的頭文件以及Java中的包很類似,比如在Python中要調(diào)用sqrt函數(shù),必須用import關(guān)鍵字引入math這個(gè)模塊,下面就來了解一下Python中的模塊。
說的通俗點(diǎn):模塊就好比是工具包,要想使用這個(gè)工具包中的工具(就好比函數(shù)),就需要導(dǎo)入這個(gè)模塊是模塊

import

在Python中用關(guān)鍵字import來引入某個(gè)模塊,比如要引用模塊math,就可以在文件最開始的地方用import math來引入。
形如:

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 別名 簡化代碼編寫

模塊的制作

在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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容