異常處理
try:
print(num)
print("*********")
except:
print("捕獲到了異常")
print("##############")
打印結(jié)果:
捕獲到了異常
##############
try:
11/0
print(num)
print("*********")
except (NameError,FileNotFoundError):
print("捕獲到了異常")
except Exception as ret:
print("只要上面的except沒有找到異常,這個(gè)異常一定能捕獲")
print(ret)
else:
print("沒有異常才會(huì)執(zhí)行的效果")
finally:
print("不管有沒有產(chǎn)生異常,這句話總會(huì)執(zhí)行")
print("##############")
運(yùn)行結(jié)果:
只要上面的except沒有找到異常,這個(gè)異常一定能捕獲
division by zero
不管有沒有產(chǎn)生異常,這句話總會(huì)執(zhí)行
##############
異常傳遞
拋出自定義異常

image.png
異常處理中拋出異常

image.png
模塊
#導(dǎo)入其他模塊,可以直接調(diào)用其他模塊里的方法
import sendmsg
sendmsg test1()
#導(dǎo)入某個(gè)模塊的某個(gè)方法
from sendmsg import test1, test2
test1()
也可以使用這個(gè)導(dǎo)入所有的東西
from sendmsg import *
import time as tt
tt.sleep(3)
name:是系統(tǒng)自定義的變量
print("name")
如果是python自己調(diào)用,他相當(dāng)于是一個(gè)字符串,如果別人導(dǎo)入此模塊,則打印的是這個(gè)模塊的名字
if __name__ =="__main__"
test()
test1()
all
只要模塊里面有all,則加入此列表的方法被別的模塊調(diào)用時(shí)才可以使用,否則,無法調(diào)用
__all__ = ["test1"]
def testxjx():
print("xjx")
def test1():
print("1111111")
def test2():
print("22222222")
如果文件結(jié)構(gòu)是下面這樣,就不能通過import 文件夾名 導(dǎo)入并調(diào)用文件。

image.png
此時(shí)只要給TestMsg下新建一個(gè) init.py ,如下結(jié)構(gòu),此時(shí)這個(gè)文件夾就成為一個(gè)包。

image.png
然后在init.py文件中寫入:
__all__ = ["sendmsg"]
from . import sendmsg #用這個(gè)python2和python3都可以用
print("hahahahha") #直接導(dǎo)入包時(shí),會(huì)先執(zhí)行包里的內(nèi)容
此時(shí)才可以使用sendmsg這個(gè)模塊,并調(diào)用里面的方法
模塊的發(fā)布
如果你想把自己寫的包安裝到電腦系統(tǒng)上,以方便任何程序調(diào)用,則:
1、在和包同一個(gè)路徑下建立一個(gè)文件
#文件內(nèi)容
from distutils.core import setup
setup(name = "xjx",version = "1.0",description = "xjx's module",author = "xjx",py_moudles = ['TestMsg.sendmsg','TestMsg.receivemsg'])
#然后在命令行里構(gòu)建
python3 setup.py build

image.png
生成發(fā)布?jí)嚎s包:
#就會(huì)多一個(gè) .tar.gz 包
python3 setup.py sdist
解壓:
安裝:
python3 setup.py install
然后就可以在所有的
程序中直接import使用