異常
概念
- 程序運(yùn)行時(shí),如果Python 解釋器遇到了錯(cuò)誤,會(huì)停止程序運(yùn)行,并且提示錯(cuò)誤信息,這就是異常
- 程序停止執(zhí)行并提示錯(cuò)誤信息的動(dòng)作,稱為 拋出異常
異常捕獲
- **try: ** 里面的代碼,不確定是否能夠正常執(zhí)行.
- **except: ** 當(dāng)try里面的代碼出現(xiàn)錯(cuò)誤時(shí),程序會(huì)跳到except 里執(zhí)行
- 對(duì)某些代碼的執(zhí)行不確定是否正確,可以使用 try: except 來捕獲并處理異常
語法
try:
嘗試執(zhí)行代碼
except:
出現(xiàn)錯(cuò)誤的處理
錯(cuò)誤類型
- 在Python中,程序執(zhí)行時(shí)可能會(huì)遇到 不同類型的異常 ,并且需要針對(duì)不同類型的異常,做出不同的響應(yīng),這時(shí)就需要捕獲異常類型了
- 當(dāng) Python解釋器 拋出異常時(shí) ,最后一行錯(cuò)誤信息的第一個(gè)單詞,就是錯(cuò)誤類型
- 如果希望 無論出現(xiàn)任何錯(cuò)誤 ,都不會(huì)因?yàn)?Python 解釋器 拋出異常而被終止**,可以用 except Exception **
語法
try:
嘗試執(zhí)行的代碼
except 錯(cuò)誤類型1:
針對(duì)錯(cuò)誤類型1,對(duì)應(yīng)的處理代碼
except (錯(cuò)誤類型2,錯(cuò)誤類型3):
針對(duì)錯(cuò)誤類型2和3,對(duì)應(yīng)的處理代碼
except Exception as e:
未知錯(cuò)誤處理
示例
try:
# 除零異常 案例
# num=10/0
# 其它異常
ss=int("df")
except ZeroDivisionError:
print("這是除0異常")
except Exception as e:
print("未知異常:",e)
輸出結(jié)果
異常的傳遞
- 當(dāng)函數(shù)/方法 執(zhí)行出現(xiàn)異常,會(huì)將異常傳遞給 函數(shù)/方法 的調(diào)用一方
- 如果 傳遞到主程序 ,仍然 ** 沒有異常處理** ,程序才會(huì)被終止
主動(dòng)拋出異常
- 在開發(fā)中,除了 代碼執(zhí)行出錯(cuò) Python ** 解釋器 拋出異常之外** ,還可以根據(jù) 應(yīng)用程序特有的業(yè)務(wù)需求 ,主動(dòng)拋出異常
- Python 中提供了一個(gè) Exception 異常類
- 如果想要主動(dòng)拋出異常
- 創(chuàng)建一個(gè) Exception 的對(duì)象
- 使用 raise 關(guān)鍵字拋出異常
**示例
**
def input_pwd(pwdd):
""" 校驗(yàn)密碼,密碼長(zhǎng)度只能是6位 """
if len(pwdd)!=6:
ex=Exception("主動(dòng)拋出異常:密碼長(zhǎng)度不符合規(guī)定!!")
raise ex
print("你輸入的密碼是:%s" %pwdd)
try:
input_pwd("2332323232")
except Exception as e:
print(e)
**輸出結(jié)果
**
模塊
概念
- 模塊是 Python 程序架構(gòu)的一個(gè)核心概念
- 每一個(gè)以擴(kuò)展名** py** 結(jié)尾的 **Ptyon **源代碼文件都是一個(gè) 模塊
- **模塊名 **同樣也是一個(gè)標(biāo)識(shí)符,需要符合標(biāo)識(shí)符的命名規(guī)則
- 在模塊中定義的 全局變量、函數(shù)、類 都是提供給外面直接使用的工具
- 模塊 就好比是工具包,要想使用這個(gè)工具包中的工具,就需要先導(dǎo)入這個(gè)模塊
import 導(dǎo)入示例
# 方式一
import 模塊名1,模塊名2
# 方式二
import 模塊名1
import 模塊名2
# 方式三,導(dǎo)入后使用別名
import 模塊1 as 模塊別名
**導(dǎo)入后,通過模塊名. **使用 模塊提供的工具 (全局變量、函數(shù)、類)
from... import 導(dǎo)入
- 如果希望 **從某一個(gè)模塊 **中,導(dǎo)入 部分 工具 , 就可以使用 from ... import 的方式
- import 模塊名 **是一次性 把模塊中 所有工具全部導(dǎo)入, 并且通過 模塊名/別名 **訪問
- 導(dǎo)入后不需要通過 ** 模塊名. ,** 可以直接使用** 模塊提供的工具 ——全局變量、函數(shù)、類**
- 如果 兩個(gè)模塊, 存在同名的函數(shù)**,后導(dǎo)入的模塊會(huì)覆蓋先導(dǎo)入的模塊**
- 一旦發(fā)生沖突,可以使用 as 關(guān)鍵字給其中一個(gè)工具起一個(gè)別名
# 從模塊中導(dǎo)入某個(gè)工具
form 模塊名1 import 工具名
# 導(dǎo)入所有工具(不推薦使用,出現(xiàn)同名工具不好查)
from 模塊名 import *
示例
import random as rd
from tqdm import tqdm
num=rd.randint(0,10)
print("生成的隨機(jī)數(shù)是:%d" %num)
# 生成進(jìn)度條
for i in tqdm(range(10)):
pass
輸出結(jié)果
原則
- 每一個(gè)文件都應(yīng)該是可以被導(dǎo)入的
- 一個(gè)獨(dú)立的 Python 文件就是一個(gè)** 模塊**
- 在導(dǎo)入文件時(shí),文件中** 所有沒有任何縮進(jìn)的代碼** 都會(huì)被執(zhí)行一遍
**name **屬性
- name 可以做到,測(cè)試模塊的代碼 只在測(cè)試情況下運(yùn)行,而在 被導(dǎo)入時(shí)不會(huì)執(zhí)行
- **name **是 Python 的一個(gè)內(nèi)置屬性,記錄著一個(gè)字符串
- 如果被其他文件導(dǎo)入 name 就是模塊名
- 如果 是當(dāng)前執(zhí)行的程序 name 是 main
**示例 **
cal.py 文件內(nèi)容
name ="張三"
def add(a,b):
return a+b
def reduce(a,b):
return a-b
print("計(jì)算結(jié)果是:%d" %add(1,2))
hello3.py 文件內(nèi)容
import cal
num=cal.add(2,2)
print("num的值:%d" %num)
執(zhí)行 hello3.py 的結(jié)果
如果不想執(zhí)行 cal.py 模塊中打印的內(nèi)容,可以加 if name ==" main "
name ="張三"
def add(a,b):
return a+b
def reduce(a,b):
return a-b
if __name__ == "__main__":
print("計(jì)算結(jié)果是:%d" %add(1,2))
修改完 cal.py 后,再次執(zhí)行 hello3.py 文件
包
概念
- **包 是一個(gè)包含多個(gè)模塊的 特殊目錄 **
- 目錄下有個(gè)特殊文件** init .py**
- 包名的命名方式 和變量名一致,小寫字母 +_
- 優(yōu)點(diǎn)
- 使用 import 包名,可以一次性導(dǎo)入包中所有模塊
** init .py 文件**
- 要在外界使用** 包 **中的模塊,需要在 init .py 中指定 對(duì)外界提供的模塊列表
# 從當(dāng)前目錄 導(dǎo)入模塊列表
from . import test1
from . import test2
示例
制作模塊
發(fā)布模塊
- 如果希望自己的模塊,分享給其他人,可以按照以下步驟操作
- 創(chuàng)建 setup.py
-
from distutils.core import setup setup( name="ani",#包名 version="1.0", #版本 description="say hello模塊", # 描述信息 long_description="完成的 say hello 模塊", # 完事的描述信息 author="zq", # 作者 author_email="[email protected]", # 作者郵箱 url="www.xxx.com", # 主頁 py_modules=["ani.test1","ani.test2"] # 包中所有要分享的模塊 )
-
- 構(gòu)建模塊
- 命名行輸入: python setup.py build
- 生成發(fā)布的壓縮包
- 命名行輸入: python setup.py sdist
- 創(chuàng)建 setup.py
安裝模塊
-
解壓 ani-1.0.tar.gz 壓縮包
-
進(jìn)入解壓后的目錄,命令行輸入:python setup.py install
卸載模塊
- 直接從安裝目錄下,把安裝的模塊 目錄 刪除就可以了
**pip 安裝第三方模塊
**
- pip 是一個(gè)現(xiàn)代的,通用的 Python 包管理工具
- 提供了對(duì) Python 包的查找、下載、安裝、卸載等功能
- 安裝與制裁命令如下
- pip install xxx
- pip uninstall xxx
示例
-
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82874 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86628 -
解釋器
+關(guān)注
關(guān)注
0文章
103瀏覽量
6749
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問python-樹莓派如何通過按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?
python常見異常類型
什么是python包、模塊和庫?
python常規(guī)包與命名空間包
python-速成指南
在Anaconda中安裝python包seaborn

python如何捕獲異常和主動(dòng)拋出異常
python包、模塊和庫是什么
詳解python常規(guī)包與命名空間包
python包模塊相對(duì)導(dǎo)入from和import介紹1
python包模塊相對(duì)導(dǎo)入from和import介紹2
簡(jiǎn)述python包模塊import和from及all
Python SDK包的使用

評(píng)論