python的異常處理和模組發布安裝

來源:互聯網
上載者:User

標籤:主線程   card   部分   error   發布   開啟   異常處理   沒有   des   

1.完整的異常處理

 異常處理能夠保證程式出錯是也能夠完整運行,不會應為bug而停止運行,這裡介紹下擷取異常的完整格式

 1 try: 2     num = int(input("輸入整數:")) 3     print(8/num) 4  5 except ValueError: 6     print("請輸入正確的整數!") 7 except ZeroDivisionError: 8     print("不能為0") 9 10 except Exception as result:11     print("未知異常 %s" % result)12 13 else:14     print("成功運行沒有報錯")15 16 finally:17     print("不管有什麼問題,我都要運行!")18 19 print("結束!")

ValueError和ZeroDivisionError是兩個系統存在的異常,表示值錯誤和除(或模數)零 錯誤
通過try對可能存在異常的部分進行檢測,如果有異常,try中代碼不運行,同時檢測except中的異常類型進行匹配,其中Exception表示所有異常,沒有異常則運行else中能代碼
finally中的代碼無論是否有異常都要運行
實際擷取異常中不需要這麼完整,可根據具體情況自行刪減

2.異常的傳遞性

1 def fun():2     num = int(input("輸入整數:"))3     return 10 / num4 5 try:6     print(fun())7 except Exception as result:8     print(result)

異常是有傳遞性的,在函數方法中如果出現了異常,程式是不會直接報異常的,等到運行到主線程中還沒有處理掉這個異常那麼此時就會報異常,同時停止程式
按照原來的思路,需要在每個可能出現異常的地方進行擷取異常,這樣函數方法一多久或造成代碼太過繁瑣
那麼根據異常的傳遞性可以在主線程中進行拋異常

3.自訂拋出異常

 1 def fun(): 2     num = input("請輸入9個字元:") 3  4     if len(num) == 9: 5         return num 6     ex = Exception("長度不夠9!") 7  8     raise ex 9 10 try:11     print(fun())12 except Exception as result:13     print(result)

有些時候需要自已定義異常,來滿足開發需求,那麼需要raise 來返回自訂的異常

4.本包內調用其他模組

import card_main
from t1 import function as mmm

import + 模組名,如果模組名太長,可以採用as進行別名
只是擷取一個方法那麼可以採用from  +  模組名 + import + 函數名

5.不同包內調用模組

測試包測試匯入pytest內的模組,方法同樣是採用import.pytest.模組名
這裡需要對pytest包內的__init__.py檔案進行編寫

1 from . import t12 from . import 靜態方法

表示允許t1和靜態方法模組被調用

6.__name__

1 def __main():2        print(__name__)3 4 5 if __name__ == "__main__":6        __main()

__name__是Python的內建屬性,當前模組是主線程時為__main__,當前不是時為該模組的名稱,
用這個方法可以成功的把模組中的實現給規避掉

7.發布模組

首先要建立一個項目,把需要共用的模組複製進來,在建立一個setup.py檔案

 1 from distutils.core import setup 2  3 setup(name="pytest",  # 發布的模組名 4       version="1.0",  # 版本號碼 5       description="xxxx模組",  # 簡要描述 6       long_description="xxxxxxxxxxxxxxx",  # 全部的描述 7       author="lsd",  # 作者 8       url="www.baidu.com",  # 首頁地址 9       10       # 發布的模組名11       py_modules=["pytest.t1",12                   "pytest.靜態方法"]13       )

之後,在該項目目錄下開啟cmd,或者Powershell

python setup.py build 表示編譯
python setup.py sdist 表示發布
python setup.py install 表示安裝

安裝模組工具包還可以採用pip安裝,這裡暫時不介紹

 

python的異常處理和模組發布安裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.