Python異常模塊和包

異常

當檢測到一個錯誤時,Python解釋器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的“異常”, 也就是我們常說的BUG
例如:以r方式打開一個不存在的文件。
f = open(‘python1.txt’,‘r’,encoding=‘utf-8’)
在這里插入圖片描述

當我們的程序遇到了BUG, 那么接下來有兩種情況:

  1. 整個程序因為一個BUG停止運行
  2. 對BUG進行提醒, 整個程序繼續運行
    在之前的學習中, 我們所有的程序遇到BUG就會出現①的這種情況, 也就是整個程序直接奔潰。
    但是在真實工作中, 我們肯定不能因為一個小的BUG就讓整個程序全部奔潰, 也就是我們希望的是達到② 的這種情況那這里我們就需要使用到捕獲異常
    捕獲異常的作用在于:提前假設某處會出現異常,做好提前準備,當真的出現異常的時候,可以有后續手段。
    捕獲異常的基本語句
try:可能發生錯誤的代碼
except:如果出現異常執行的代碼例如:
try:f = open('python1.txt','r',encoding='utf-8')
except:f = open('python1.txt','w',encoding='utf-8try:print(name)
except NameError as e:print('name變量名稱未定義錯誤')

注意:
● 如果嘗試執行的代碼的異常類型和要捕獲的異常類型不一致,則無法捕獲異常。
● 一般try下方只放一行嘗試執行的代碼。
當捕獲多個異常時,可以把要捕獲的異常類型的名字,放到except 后,并使用元組的方式進行書寫。

try:print(1/0)
except (NameError, ZeroDivisionError):print('ZeroDivision錯誤...')

執行結果:
在這里插入圖片描述

異常 else
else表示的是如果沒有異常要執行的代碼。

try:print(1)
except Exception as e:print(e)
else:print('我是else,是沒有異常的時候執行的代碼')

異常的 finally
finally表示的是無論是否異常都要執行的代碼,例如關閉文件。

try:f = open('python.txt', 'r')
except Exception as e:f = open('python.txt', 'w')
else:print('沒有異常,真開心')
finally:f.close()

異常的傳遞
異常是具有傳遞性的
當函數func01中發生異常, 并且沒有捕獲處理這個異常的時候, 異常會傳遞到函數func02, 當func02也沒有捕獲處理這個異常的時候main函數會捕獲這個異常, 這就是異常的傳遞性.
當所有函數都沒有捕獲異常的時候, 程序就會報錯
利用異常具有傳遞性的特點, 當我們想要保證程序不會因為異常崩潰的時候, 就可以在main函數中設置異常捕獲, 由于無論在整個程序哪里發生異常, 最終都會傳遞到main函數中, 這樣就可以確保所有的異常都會被捕獲。

Python 模塊

Python 模塊(Module),是一個 Python 文件,以 .py 結尾. 模塊能定義函數,類和變量,模塊里也能包含可執行的代碼。
模塊的作用: python中有很多各種不同的模塊, 每一個模塊都可以幫助我們快速的實現一些功能, 比如實現和時間相關的功能就可以使用time模塊我們可以認為一個模塊就是一個工具包, 每一個工具包中都有各種不同的工具供我們使用進而實現各種不同的功能。
模塊的導入方式
模塊在使用前需要先導入 導入的語法如下:
在這里插入圖片描述

常用的組合形式如:
● import 模塊名
● from 模塊名 import 類、變量、方法等
● from 模塊名 import *
● import 模塊名 as 別名
● from 模塊名 import 功能名 as 別名
import 某塊名

import 模塊名
import 模塊名1,模塊名2模塊名.功能名()例如:
# 導入時間模塊
import time
print("開始")
# 讓程序睡眠1秒(阻塞)
time.sleep(1)
print("結束")

from 模塊名 import 功能名

from 模塊名 import 功能名功能名()例如:
# 導入時間模塊中的sleep方法
from time import sleep
print("開始")
# 讓程序睡眠1秒(阻塞)
sleep(1)
print("結束")

from 模塊名 import *

from 模塊名 import *功能名()例如:
# 導入時間模塊中所有的方法
from time import *
print("開始")
# 讓程序睡眠1秒(阻塞)
sleep(1)
print("結束")

as定義別名

# 模塊定義別名
import 模塊名 as 別名# 功能定義別名
from 模塊名 import 功能 as 別名例如:
# 模塊別名
import time as tt
tt.sleep(2)
print('hello')# 功能別名
from time import sleep as sl
sl(2)
print('hello')

制作自定義模塊
Python中已經幫我們實現了很多的模塊. 不過有時候我們需要一些個性化的模塊, 這里就可以通過自定義模塊實現, 也就是自己制作一個模塊。
例如:新建一個Python文件,命名為my_module1.py,并定義test函數
在這里插入圖片描述
在這里插入圖片描述

注意: 每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字. 也就是說自定義模塊名必須要符合標識符命名規則。
在實際開發中,當一個開發人員編寫完一個模塊后,為了讓模塊能夠在項目中達到想要的效果,這個開發人員會自行在py文件中添加一些測試信息,例如,在my_module1.py文件中添加測試代碼

test(1,1)
def test(a, b):print(a + b)test(1, 1)

問題:
此時,無論是當前文件,還是其他已經導入了該模塊的文件,在運行的時候都會自動執行test函數的調用
解決方案:

def test(a, b):print(a + b)# 只在當前文件中調用該函數,其他導入的文件內不符合該條件,則不執行test函數調用
if __name__ == '__main__':test (1, 1)

注意:
在這里插入圖片描述

當導入多個模塊的時候,且模塊內有同名功能. 當調用這個同名功能的時候,調用到的是后面導入的模塊的功能
all
如果一個模塊文件中有__all__變量,當使用from xxx import *導入時,只能導入這個列表中的元素
在這里插入圖片描述
在這里插入圖片描述

Python 包

從物理上看,包就是一個文件夾,在該文件夾下包含了一個 init.py 文件,該文件夾可用于包含多個模塊文件從邏輯上看,包的本質依然是模塊
包的作用:當我們的模塊文件越來越多時,包可以幫助我們管理這些模塊, 包的作用就是包含多個模塊,但包的本質依然是模塊
創建步驟

  1. 新建包my_package
  2. 新建包內模塊:my_module1my_module2
  3. 模塊內代碼如下
    ![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/f39a67b57bed4042af22bc4e8bd5d6e1.png
    在這里插入圖片描述在這里插入圖片描述
    在這里插入圖片描述

導入包
方式一:
import 包名.模塊名
包名.模塊名.目標
在這里插入圖片描述

方式二:
from 包名 import *
模塊名.目標
注意:必須在__init__.py文件中添加__all__ = [],控制允許導入的模塊列表
在這里插入圖片描述
在這里插入圖片描述
my_module1報紅證明不可用
注意: __all__針對的是 ’ from … import * ‘ 這種方式對 ‘ import xxx ’ 這種方式無效

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80351.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

匯編:循環程序設計

一、 實驗要求 熟練掌握循環程序設計的基本方法熟練掌握單片機外部存儲空間的訪問方法 二、 實驗設計 1.整體思路 先初始化一些寄存器和數據存儲位置,然后調用兩個子程序Procedure1和Procedure2,分別從SRC復制數據到DEST,一個從開頭到末尾&…

典籍知識問答模塊AI問答bug修改

一、修改流式數據處理問題 1.問題描述&#xff1a;由于傳來的數據形式如下&#xff1a; event:START data:350 data:< data:t data:h data:i data:n data:k data:> data: data: data: data: data:嗯 data:&#xff0c; 導致需要修改獲取正常的當前信息id并更…

【金倉數據庫征文】- 金融HTAP實戰:KingbaseES實時風控與毫秒級分析一體化架構

文章目錄 引言&#xff1a;金融數字化轉型的HTAP引擎革命一、HTAP架構設計與資源隔離策略1.1 混合負載物理隔離架構1.1.1 行列存儲分區策略1.1.2 四級資源隔離機制 二、實時流處理與增量同步優化2.1 分鐘級新鮮度保障2.1.1 WAL日志增量同步2.1.2 流計算優化 2.2 物化視圖實時刷…

季報中的FPGA行業:U型反轉,春江水暖

上周Lattice,AMD兩大廠商相繼發布2025 Q1季報,盡管恢復速度各異,但同時傳遞出FPGA行業整體回暖的復蘇信號。 5月5日,Lattice交出了“勉強及格”的答卷,報告季度營收1億2000萬,與華爾街的預期基本相符。 對于這家聚焦在中小規模器件的領先廠商而言,按照其CEO的預期,長…

使用 javap 深入理解 Java 字節碼

引言 Java 是一種廣泛使用的高級編程語言,其獨特之處在于編譯后的代碼不是直接的機器碼,而是一種稱為字節碼的中間表示形式。字節碼存儲在 .class 文件中,由 Java 虛擬機 (JVM) 解釋或即時編譯為特定平臺的機器碼。這種設計賦予了 Java 平臺無關性,即“一次編寫,到處運行…

LeetCode_sql刷題(3482.分析組織層級)

題目描述&#xff1a;3482. 分析組織層級 - 力扣&#xff08;LeetCode&#xff09; 表&#xff1a;Employees ------------------------- | Column Name | Type | ------------------------- | employee_id | int | | employee_name | varchar | | manager_id …

工業場景輪式巡檢機器人純視覺識別導航的優勢剖析與前景展望

一、引言 1.1 研究背景與意義 在工業 4.0 的大背景下&#xff0c;工業生產的智能化、自動化水平不斷提高&#xff0c;對工業場景的巡檢工作提出了更高的要求。傳統的人工巡檢方式不僅效率低下、成本高昂&#xff0c;而且容易受到人為因素的影響&#xff0c;難以滿足現代工業生…

《棒球萬事通》球類運動有哪些項目·棒球1號位

以棒球運動為例&#xff0c;棒球運動涉及多個核心項目和比賽形式&#xff0c;以下為主要分類&#xff1a; 一、比賽環節 投球&#xff08;Pitching&#xff09; 防守方投手向擊球員投球&#xff0c;目標是讓對方難以擊中或制造出局。 擊球&#xff08;Batting&#xff09; …

第五項修煉:打造學習型組織

最近一直接到的需求&#xff0c;都是公司董事長或總經理都特別推崇《第五項修煉&#xff1a;打造學習型組織》的內容&#xff0c;讓各個層級的管理者都持續學習、應用、實踐。我不禁開始反思&#xff0c;這背后到底隱藏著什么原因&#xff1f; 隨著商業環境的變化和復雜性的增加…

國內AWS CloudFront與S3私有桶集成指南:安全訪問靜態內容

在現代web應用架構中,將靜態內容存儲在Amazon S3中并通過CloudFront分發是一種常見且高效的做法。本指南將詳細介紹如何創建私有S3桶,配置CloudFront分配,并使用Origin Access Identity (OAI)來確保安全訪問。 步驟1:創建S3桶 首先,我們需要創建一個名為"b-static&…

BUUCTF——Nmap

BUUCTF——Nmap 進入靶場 類似于一個nmap的網站 嘗試一下功能 沒什么用 看看數據包 既然跟IP相關 偽造一個XXF看看 拼接了一下沒什么用 果然沒這么簡單 嘗試一下命令注入 構造payload 127.0.0.1 | ls 應該有過濾 加了個\ 直接構造個php木馬上傳試試 127.0.0.1 | <?…

NPN、PNP三極管的應用

由于電路知識實在是難以拿出手&#xff0c;在面試的時候被問到三極管相關問題&#xff0c;相當地尷尬。在網上簡要地學習了相關的理論知識&#xff0c;在這里給出自己的理解。更為基礎的原理在這里并不提及。我們面向實際應用學習即可。 我們知道常見的三極管總是硅管&#xff…

系統架構設計師案例分析題——軟件架構設計篇

重中之重&#xff0c;本題爭取拿下25滿分~ 目錄 一.核心知識 1.什么是架構風格 2.RUP的9個核心工作流 3.企業應用集成方式 4.軟件質量屬性 5.SySML系統建模語言9種圖 6.云計算架構 7.中間件 8.構件、連接件、軟件重用 9.層次型架構的缺點 10.架構開發方法ADM 11.微…

可變參數(Variadic Functions)- 《Go語言實戰指南》

Go 語言允許函數接受不定數量的參數&#xff0c;也稱“可變參數”。這為構建靈活的函數提供了便利&#xff0c;常用于求和、拼接等操作。 一、語法格式 func 函數名(參數名 ...類型) 返回值類型 {// 函數體 } 可變參數本質上是一個切片&#xff08;slice&#xff09;&#xf…

手機換IP真的有用嗎?可以干什么?

在當今數字化時代&#xff0c;網絡安全和個人隱私保護日益受到重視。手機作為我們日常生活中不可或缺的工具&#xff0c;其網絡活動痕跡往往通過IP地址被記錄和追蹤。那么&#xff0c;手機換IP真的有用嗎&#xff1f;它能為我們帶來哪些實際好處&#xff1f;本文將為你一一解答…

Linux517 rsync同步 rsync借xinetd托管 配置yum源回顧

計劃測試下定時服務 同步成功 是否為本地YUM源內容太少&#xff1f;考慮網絡YUM源 單詞拼錯了 計劃后面再看下 MX安裝 參考 計劃回顧配置YUM源 配置本地YUM源配置外網YUM源配置倉庫YUM源&#xff08;不熟&#xff09; 參考 參考阿里云 配置完畢 本地yum源配置 先備份 再…

第三部分:內容安全(第十六章:網絡型攻擊防范技術、第十七章:反病毒、第十八章:入侵檢測/防御系統(IDS/IPS))

文章目錄 第三部分&#xff1a;內容安全第十六章&#xff1a;網絡型攻擊防范技術網絡攻擊介紹流量型攻擊 --- Flood攻擊單包攻擊及防御原理掃描窺探攻擊畸形報文攻擊Smurf攻擊Land攻擊Fraggle攻擊IP欺騙攻擊 流量型攻擊防御原理DDoS通用攻擊防范技術 ---- 首包丟棄TCP類攻擊SYN…

c++成員函數返回類對象引用和直接返回類對象的區別

c成員函數返回類對象引用和直接返回類對象的區別 成員函數直接返回類對象&#xff08;返回臨時對象&#xff0c;對象拷貝&#xff09; #include <iostream> class MyInt { public:int value;//構造函數explicit MyInt(int v0) : value(v){}//加法操作,返回對象副本&…

阿里巴巴 1688 數據接口開發指南:構建自動化商品詳情采集系統

在電商行業數據驅動決策的趨勢下&#xff0c;高效獲取商品詳情數據成為企業洞察市場、優化運營的關鍵。通過阿里巴巴 1688 數據接口構建自動化商品詳情采集系統&#xff0c;能夠快速、精準地采集海量商品信息。本文將從開發準備、接口分析、代碼實現等方面&#xff0c;詳細介紹…

c語言 socket函數

c語言 socket函數 在 C 語言中,socket 函數是網絡編程的核心函數之一,用于創建一個網絡套接字(socket),它是網絡通信的端點。以下是關于 socket 函數的詳細介紹: 函數原型 #include <sys/socket.h>int socket(int domain, int type, int protocol);參數說明 domai…