常見異常
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()