Python面向對象(4)
- 2020 年 1 月 1 日
- 筆記
本文標識 : Python_13
本文編輯 : Jack 風
編程工具 : Anaconda、Pycharm
閱讀時長 : 6分鐘

1、異常的傳遞
1.1、try嵌套

- 首先從 test.txt 文件中讀取到資訊
- ^c 關閉文件
- 沒有這個文件
- 最後的finally
1.2、函數嵌套調用中

- 如果try嵌套,那麼如果裡面的try沒有捕獲到這個異常,那麼外面的try會接收到這個異常,然後進行處理,如果外邊的try依然沒有捕獲到,那麼再進行傳遞。。。
- 如果一個異常是在一個函數中產生的,例如函數A—->函數B—->函數C,而異常是在函數C中產生的,那麼如果函數C中沒有對這個異常進行處理,那麼這個異常會傳遞到函數B中,如果函數B有異常處理那麼就會按照函數B的處理方式進行執行;如果函數B也沒有異常處理,那麼這個異常會繼續傳遞,以此類推。。。如果所有的函數都沒有處理,那麼此時就會進行異常的默認處理,即通常見到的那樣
- 注意觀察上圖中,當調用test3函數時,在test1函數內部產生了異常,此異常被傳遞到test3函數中完成了異常處理,而當異常處理完後,並沒有返回到函數test1中進行執行,而是在函數test3中繼續執行
2、拋出自定義的異常
可以用
`raise
語句來引發一個異常。異常/錯誤對象必須有一個名字,且它們應是Error或Exception類的子類

以上程式中,關於程式碼
#super().__init__()
的說明 這一行程式碼,可以調用也可以不調用,建議調用,因為__init__
方法往往是用來對創建完的對象進行初始化工作,如果在子類中重寫了父類的__init__
方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程式的穩定了,所以在以後的開發中,如果重寫了父類的__init__
方法,最好是先調用父類的這個方法,然後再添加自己的功能
3、異常處理中拋出異常

4、模組介紹
4.1、模組
說的通俗點:模組就好比是工具包,要想使用這個工具包中的工具(就好比函數),就需要導入這個模組
4.2、import
在python中主要是 用關鍵字,import 來引入某個模組,
在調用math模組中的函數時,必須這樣引用:
模組名.函數名 import math #這樣會報錯 print sqrt(2) #這樣才能正確輸出結果 print math.sqrt(2)
4.3、from…import
Python的from語句讓你從模組中導入一個指定的部分到當前命名空間中
語法如下:
from modname import name1[, name2[, ... nameN]]
例如,要導入模組fib的fibonacci函數,使用如下語句:
from fib import fibonacci
注意
- 不會把整個fib模組導入到當前的命名空間中,它只會將fib里的fibonacci單個引入
4.4、from … import *
把一個模組的所有內容全都導入到當前的命名空間也是可行的,只需使用如下聲明:
from modname import *
注意
- 這提供了一個簡單的方法來導入一個模組中的所有項目。然而這種聲明不該被過多地使用。
4.5、 as

4.6、定位模組
當你導入一個模組,Python解析器對模組位置的搜索順序是:
- 當前目錄
- 如果不在當前目錄,Python則搜索在shell變數PYTHONPATH下的每個目錄。
- 如果都找不到,Python會察看默認路徑。UNIX下,默認路徑一般為/usr/local/lib/python/
- 模組搜索路徑存儲在system模組的sys.path變數中。變數里包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。
5、模組製作
5.1、定義自己的模組
在Python中,每個Python文件都可以作為一個模組,模組的名字就是文件的名字。比如有這樣一個文件test.py,在test.py中定義了函數add
#test.py def add(a,b): return a+b
5.2、調用自己定義的模組
那麼在其他文件中就可以先import test,然後通過test.add(a,b)來調用了,當然也可以通過from test import add來引入
#test1.py import test result = test.add(66,22) print(result)
5.3、測試模組
在實際開中,當一個開發人員編寫完一個模組後,為了讓模組能夠在項目中達到想要的效果,這個開發人員會自行在py文件中添加一些測試資訊,例如:
#test.py def add(a,b): return a+b # 用來進行測試 ret = add(123,543) print('int test.py file,,,,123+543=%d'%ret)
如果此時,在其他py文件中引入了此文件的話,想想看,測試的那段程式碼是否也會執行呢!
#test1.py import test result = test.add(66,22) print(result)

6、模組中的_all_
6.1、沒有

6.2、有

7、使用Pip安裝模組
pip 是 python 自帶的一個軟體,相當於手機里的應用市場,可以用來安裝、卸載、搜索 python 的常見模組。 直接輸入 pip 後回車,可以查看 pip 命令的所有可用參數。
7.1、安裝模組
在命令行執行
pip install 模組名
7.2、卸載模組
在命令行執行
pip uninstall 模組名
7.3、搜索模組
在命令行執行
pip search 模組名