1. 程式人生 > >python小總結3(異常、單例設計模式)

python小總結3(異常、單例設計模式)

一、異常

AttributeError:試圖訪問一個物件沒有的成員【屬性和方法】

ValueError:值錯誤,傳入了一個不期望的值

ImportError:無法匯入模組或者包:基本上路徑問題

IndexError:訪問了不在範圍內的索引

KeyError:試圖訪問字典中不存在的鍵

NameError:使用了還沒被賦值的變數

TypeError:傳入的資料型別和要求不符合

UnboundLocalError:試圖訪問一個還未被設定的區域性變數:基本上是存在一個和區域性變數重名的全域性變數,使用global宣告

SyntaxError:Python非法程式碼,程式碼無法編譯  

 

 

二、單例設計模式

裝飾器:作用於一個函式,也可以作用域一個類
def sigleton(cls):
  instance = {}
  #getInstance/defaultxxx/ currentxxx
  def getInstance(*args, **kwargs):
    #思路1:可以類似於new,通過是否為NOne
    #思路2:將cls作為key,cls對應的例項作為value儲存到字典中
    if cls not in instance:
      instance[cls] = cls(*args, **kwargs) #dict[key] = value


     return instance[cls]

   return getInstance

@sigleton
class Test(object):
  pass

t1 = Test()
t2 = Test()
print(id(t1) == id(t2))
print(t1 is t2)

 這些事我寫下來加強記憶的,希望我自己每次看到這句話都可以在心裡默記一句,“加油,你還差的遠呢”