錯誤和異常,模塊和包

常見異常
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
NameError
ZeroDivisionError
SyntaxError
IndexError
KeyError
IOError
AttributeError
這些異常都是BaseException的子類。

異常處理
捕捉異常(SyntaxError無法捕捉)
形式一:
try:
代碼塊
except [[NameError|KeyError|Exception] as e]:
異常處理代碼塊

示例:
    print('123')
    try:
        L= [1,2,3]
        print(L[100])
    except ZeroDivisionError as e:
        print('error: {}'.format(e))
    except IndexError as e:
        print('error: {}'.format(e))

    print('666')

形式二:(else和finally可以省略)
try:
代碼塊1
except Exception as e:
如果代碼塊1異常則執行此代碼塊
else:
如果代碼塊1沒有異常則執行此代碼塊
finally:
無論代碼塊1有沒有異常都最後執行此代碼塊

手工拋出異常
raise 異常類(異常的信息)

raise IOError('haha')
raise ValueError('haha')

調試(找到代碼中的異常並修復)
方法一:
print()
在認爲可能有錯誤的地方打印出變量內容
強烈不推薦,修改後需要刪除
方法二:
斷言 assert 條件,‘錯誤信息’
當條件不成立時則拋出斷言異常,異常信息爲:“錯誤信息”
assert 1 == 1,‘出錯了’
assert 1 == 10,‘出錯了’
方法三:
python自帶的pdb模塊,強烈不推薦
1、執行 python -m pdb test.py 進入到 pdb環境 (Pdb)
2、l(小寫字母L) :是顯示腳本並且指示(->)出下一步執行的某行代碼。
3、n : 執行下一條代碼 也就是 -> 指向的代碼 並且返回再次執行的代碼內容。
4、p <變量名> : 打印當前變量內容
5、 q : 退出 pdb 環境
方法四:
ide工具帶的調試工具,如pycharm
強烈推薦

模塊和包
都有全名空間的作用
模塊是指一個python文件
包是指一個目錄,這個目錄中必須要有一個文件 init.py 一般情況爲空

把功能相似的代碼放到一個模塊中,如操作mysql數據庫的代碼放到mysql.py中
把相似功能的模塊放到一個包中,如 mysql.py oracle.py  db2.py sqlserver.py  全部放到 db目錄中

模塊
導入模塊的方法
    import module [as 別名]
    from module import command [as 別名]
    from module import *

環境變量:
    類似於linux的PATH環境變量,python查找模塊的方法也是在一個環境變量指定的路徑中進行查找的
    如何查看當前python查找的路徑
        import sys
        sys.path  

    設置環境變量
        sys.path.append('路徑')
        修改系統環境變量  #export PYTHONPATH=$PYTHONPATH:/home/pure
注意:
    導入模塊的本質是將模塊中的代碼執行一遍
    如果重複導入同一模塊,只會執行一次

自定義模塊
    mytest1.py
         def f1():
            print('mytest1 f1')

        def f2():
            print('mytest1 f2')

        if __name__ == '__main__':
            print(globals())
            print('i am mytest1')

    mytest2.py
        import mytest1
        mytest1.f1()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章