異常
概念
- 程序運行時,如果Python 解釋器遇到了錯誤,會停止程序運行,并且提示錯誤信息,這就是異常
- 程序停止執行并提示錯誤信息的動作,稱為 拋出異常
異常捕獲
- **try: ** 里面的代碼,不確定是否能夠正常執行.
- **except: ** 當try里面的代碼出現錯誤時,程序會跳到except 里執行
- 對某些代碼的執行不確定是否正確,可以使用 try: except 來捕獲并處理異常
語法
try:
嘗試執行代碼
except:
出現錯誤的處理
錯誤類型
- 在Python中,程序執行時可能會遇到 不同類型的異常 ,并且需要針對不同類型的異常,做出不同的響應,這時就需要捕獲異常類型了
- 當 Python解釋器 拋出異常時 ,最后一行錯誤信息的第一個單詞,就是錯誤類型
- 如果希望 無論出現任何錯誤 ,都不會因為 Python 解釋器 拋出異常而被終止**,可以用 except Exception **
語法
try:
嘗試執行的代碼
except 錯誤類型1:
針對錯誤類型1,對應的處理代碼
except (錯誤類型2,錯誤類型3):
針對錯誤類型2和3,對應的處理代碼
except Exception as e:
未知錯誤處理
示例
try:
# 除零異常 案例
# num=10/0
# 其它異常
ss=int("df")
except ZeroDivisionError:
print("這是除0異常")
except Exception as e:
print("未知異常:",e)
輸出結果
異常的傳遞
- 當函數/方法 執行出現異常,會將異常傳遞給 函數/方法 的調用一方
- 如果 傳遞到主程序 ,仍然 ** 沒有異常處理** ,程序才會被終止
主動拋出異常
- 在開發中,除了 代碼執行出錯 Python ** 解釋器 拋出異常之外** ,還可以根據 應用程序特有的業務需求 ,主動拋出異常
- Python 中提供了一個 Exception 異常類
- 如果想要主動拋出異常
- 創建一個 Exception 的對象
- 使用 raise 關鍵字拋出異常
**示例
**
def input_pwd(pwdd):
""" 校驗密碼,密碼長度只能是6位 """
if len(pwdd)!=6:
ex=Exception("主動拋出異常:密碼長度不符合規定!!")
raise ex
print("你輸入的密碼是:%s" %pwdd)
try:
input_pwd("2332323232")
except Exception as e:
print(e)
**輸出結果
**
模塊
概念
- 模塊是 Python 程序架構的一個核心概念
- 每一個以擴展名** py** 結尾的 **Ptyon **源代碼文件都是一個 模塊
- **模塊名 **同樣也是一個標識符,需要符合標識符的命名規則
- 在模塊中定義的 全局變量、函數、類 都是提供給外面直接使用的工具
- 模塊 就好比是工具包,要想使用這個工具包中的工具,就需要先導入這個模塊
import 導入示例
# 方式一
import 模塊名1,模塊名2
# 方式二
import 模塊名1
import 模塊名2
# 方式三,導入后使用別名
import 模塊1 as 模塊別名
**導入后,通過模塊名. **使用 模塊提供的工具 (全局變量、函數、類)
from... import 導入
- 如果希望 **從某一個模塊 **中,導入 部分 工具 , 就可以使用 from ... import 的方式
- import 模塊名 **是一次性 把模塊中 所有工具全部導入, 并且通過 模塊名/別名 **訪問
- 導入后不需要通過 ** 模塊名. ,** 可以直接使用** 模塊提供的工具 ——全局變量、函數、類**
- 如果 兩個模塊, 存在同名的函數**,后導入的模塊會覆蓋先導入的模塊**
- 一旦發生沖突,可以使用 as 關鍵字給其中一個工具起一個別名
# 從模塊中導入某個工具
form 模塊名1 import 工具名
# 導入所有工具(不推薦使用,出現同名工具不好查)
from 模塊名 import *
示例
import random as rd
from tqdm import tqdm
num=rd.randint(0,10)
print("生成的隨機數是:%d" %num)
# 生成進度條
for i in tqdm(range(10)):
pass
輸出結果
原則
- 每一個文件都應該是可以被導入的
- 一個獨立的 Python 文件就是一個** 模塊**
- 在導入文件時,文件中** 所有沒有任何縮進的代碼** 都會被執行一遍
**name **屬性
- name 可以做到,測試模塊的代碼 只在測試情況下運行,而在 被導入時不會執行
- **name **是 Python 的一個內置屬性,記錄著一個字符串
- 如果被其他文件導入 name 就是模塊名
- 如果 是當前執行的程序 name 是 main
**示例 **
cal.py 文件內容
name ="張三"
def add(a,b):
return a+b
def reduce(a,b):
return a-b
print("計算結果是:%d" %add(1,2))
hello3.py 文件內容
import cal
num=cal.add(2,2)
print("num的值:%d" %num)
執行 hello3.py 的結果
如果不想執行 cal.py 模塊中打印的內容,可以加 if name ==" main "
name ="張三"
def add(a,b):
return a+b
def reduce(a,b):
return a-b
if __name__ == "__main__":
print("計算結果是:%d" %add(1,2))
修改完 cal.py 后,再次執行 hello3.py 文件
包
概念
- **包 是一個包含多個模塊的 特殊目錄 **
- 目錄下有個特殊文件** init .py**
- 包名的命名方式 和變量名一致,小寫字母 +_
- 優點
- 使用 import 包名,可以一次性導入包中所有模塊
** init .py 文件**
- 要在外界使用** 包 **中的模塊,需要在 init .py 中指定 對外界提供的模塊列表
# 從當前目錄 導入模塊列表
from . import test1
from . import test2
示例
制作模塊
發布模塊
- 如果希望自己的模塊,分享給其他人,可以按照以下步驟操作
- 創建 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"] # 包中所有要分享的模塊 )
-
- 構建模塊
- 命名行輸入: python setup.py build
- 生成發布的壓縮包
- 命名行輸入: python setup.py sdist
- 創建 setup.py
安裝模塊
-
解壓 ani-1.0.tar.gz 壓縮包
-
進入解壓后的目錄,命令行輸入:python setup.py install
卸載模塊
- 直接從安裝目錄下,把安裝的模塊 目錄 刪除就可以了
**pip 安裝第三方模塊
**
- pip 是一個現代的,通用的 Python 包管理工具
- 提供了對 Python 包的查找、下載、安裝、卸載等功能
- 安裝與制裁命令如下
- pip install xxx
- pip uninstall xxx
示例
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
程序
+關注
關注
117文章
3816瀏覽量
82111 -
python
+關注
關注
56文章
4821瀏覽量
85776 -
解釋器
+關注
關注
0文章
103瀏覽量
6651
發布評論請先 登錄
相關推薦
什么是python包、模塊和庫?
1. 模塊以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關的代碼分配到一個
發表于 03-09 16:48
python-速成指南
python 提供好用的兩個容器:list 和 dict。插句題外話,其實最好用的容器還是 PHP 提供的關聯數組,一個數組就包括了 python 中 list 和 dict 的全部功能,實在是很贊。
發表于 03-28 16:32
?9次下載
在Anaconda中安裝python包seaborn
在Anaconda中安裝python包seaborn(現代電源技術題庫)-在Anaconda中安裝python包seaborn? ? ? ? ? ? ?
發表于 09-18 15:01
?5次下載

python如何捕獲異常和主動拋出異常
python如何主動拋出異常和捕獲異常 1. 如何拋出異常? 異常的產生有兩種來源: 一種是程序自動拋出,比如 1/0 會自動拋出 Zero
python包、模塊和庫是什么
1. 模塊 以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。 模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關的代碼分配到一個
python包模塊相對導入from和import介紹1
無包文件**init**.py下,python通過import module導入模塊時,先搜索程序運行主目錄。
程序運行主目錄為運行的py文件所在目錄,而不是執行python.e
python包模塊相對導入from和import介紹2
python2.7先搜索當前包目錄,再搜索sys.path模塊搜索路徑。即先相對再絕對。
本示例在交互模式執行,非文件模式執行。
簡述python包模塊import和from及all
python指定導入目錄路徑,稱為包導入。
通過import和from導入包模塊。
通過**all**指定導入的模塊和導入的
Python SDK包的使用
Shodan Web端非常好用,但如果我們有從 Python 搜索的需求怎么辦? 沒關系,Shodan 官方也提供了 Python SDK 包,下面就來講講這個 SDK 包的使用。 1

評論