5Python異常處理與模塊導入全指南

目錄

什么是異常?

異常的捕獲方法:

為什么要捕獲異常?

捕獲異常的語法:

異常的else和finally語法:


什么是異常?

異常就是程序運行過程中出現了錯誤,也就是我們常說的出bug了-。-

異常的捕獲方法:

為什么要捕獲異常?

在可能發生異常的地方,進行捕獲。當異常出現的時候,提供解決方式,而不是任由其導致程序無法運行。

捕獲異常的語法:

1.try:

可能出現異常的語句

2.except? (異常)? as? 別名:

出現異常執行的語句

3.except? Exception?? as? 別名:

捕獲所有的異常

#演示捕獲異常#基本捕獲語法
try:f = open('C;\\abc.txt','r',encording='utf-8')
except:print("出現異常了,因為abc文件不存在")
'''結果:出現異常了,因為abc文件不存在'''#捕獲指定異常:
try:print(name)
except NameError as e:print(f"出現異常了,原因是{e}")
'''結果:出現異常了,原因是name 'name' is not defined'''如果出現了其他類型異常,則不能捕獲,例如:
try:f = open('C;\\abc.txt','r',encording='utf-8')
except NameError as e:print(f"出現異常了,原因是{e}")
'''
Traceback (most recent call last):File "D:\opython工程\go-learn\5.7.py", line 1143, in <module>f = open('C;\\abc.txt','r',encording='utf-8')
TypeError: 'encording' is an invalid keyword argument for open()
'''    #捕獲多個異常
try:1/0print(name)
except (NameError,ZeroDivisionError) as e:print(f"出現異常了,原因是{e}")
#未正確設置捕獲異常類型,將無法捕獲異常#捕獲所有異常
try:1/0print(name)
except Exception as e:print(f"出現異常了,原因是{e}")
'''結果:出現異常了,原因是division by zero'''

異常的else和finally語法:

else:

沒出現異常執行的語句

finally:

不管有無異常都執行后面的語句

#else在未出現異常時執行的代碼
try:print(123)
except Exception as e:print(f"出現異常了,原因是{e}")
else:print("沒出現異常")
'''結果
123
沒出現異常
'''#無論有沒有異常都執行finally后面的代碼
try:print(name)
except Exception as e:print(f"出現異常了,原因是{e}")
finally:print("沒出現異常")
'''結果:
出現異常了,原因是name 'name' is not defined
沒出現異常
'''

異常的傳遞性:

在 Python 中,異常的傳遞性(也稱為異常的傳播)是指當異常在函數或方法中被觸發但未被捕獲時,它會自動向上(向調用棧的上層)傳遞,直到被捕獲處理或導致程序終止。

碰到異常代碼會終止

def func1():print("func1開始執行")1/0print("func1結束執行")def func2():print("func2開始執行")func1()print("func2結束執行")
def main():func2()main()

在調用函數時,仍然可以使用try和except接收異常

def func1():print("func1開始執行")1/0print("func1結束執行")def func2():print("func2開始執行")func1()print("func2結束執行")def main():try:func2()except Exception as e:print(f"出錯了,原因是{e}")main()

模塊的概念和導入:

什么是模塊?

模塊就是一個Python代碼文件,內含類、函數、變量等,我們可以導入進行使用。

如何導入?

1. import? 模塊名? ?:直接導入

2.from? 模塊? import? 功能? : 導入模塊的指定功能

3.as可以指定別名

#演示Python的模塊導入#使用import導入time模塊使用sleep功能(函數)
import time
print("吃了嗎")
time.sleep(3)
print("吃了")#使用from導入time的sleep功能(函數)
from time import sleep
print("吃了嗎")
sleep(3)
print("吃了")#使用*導入time模塊的全部功能
from time import *
print("吃了嗎")
sleep(3)
print("吃了")
print(localtime())#使用as給模塊改名
import time as f
print("吃了嗎")
f.sleep(3)
print("吃了")#使用as給模塊的特定功能改名
from time import sleep as sl
print("吃了嗎")
sl(3)
print("吃了")

自定義python包:

什么是Python的包?

? ? 包就是一個文件夾,里面可以存放許多Python的模塊(代碼文件),通過包,在邏輯上將一批模塊歸為一類,方便使用。

如何自定義:

1:創建一個package包

2:創建一個python文件

3:在此文件中編寫函數功能

4:可以像調用模塊的那樣調用mod1中的函數

import mypackage.mod1
或者
from mypackage.mod1 import ppp
ppp()#結果是123

all 變量的作用

同模塊中學習到的是一個作用,控制 import*能夠導入的內容

在_init_文件中定義all變量,可以控制 import*能夠導入的內容,只有all變量中的函數可以被導入

如何導入第三方pyhton包:

安裝成功后可以import導入使用

方法一:使用cmd命令提示符

格式:

pip? install? 包名? ?

pip? install? -i? ??https://pypi.tuna.tsinghua.edu.cn/simple? 包名? :從國內鏡像站下載速度更快

方法二:pycharm中安裝包

?

綜合案例:

------------------這是str_util.py的代碼-----------------------------------def str_reserve(s):s=input("請輸入一個字符串\n")s=s[::-1]print(f"這個字符串反轉后是:\n{s}")def str_sub():s = input("請輸入一個字符串\n")x=int(input("請輸入起始下標\n"))y=int(input("請輸入終止下標\n"))s_sub=s[x:y]print(s_sub)------------------這是file_util.py的代碼-----------------------------------def print_file_info():name=input("請輸入文件名\n")f= Nonetry:f=open(f"{name}",'r',encoding='utf-8')print(f)except:print("出現異常了,因為文件不存在\n")finally:if f is not None:f.close()def append_to_file():f = Nonename = input("請輸入文件名\n")try:f = open(f"{name}", 'a', encoding='utf-8')data = input("請輸入追加內容\n")f.write(f"{data}\n")except:print("出現異常了,因為文件不存在\n")finally:if f is not None:f.close()------------------這是代碼調用測試-----------------------------------import mypackage.str_util
import mypackage.file_utilstr_sub()
str_reserve()print_file_info()
append_to_file()

這是我的個人學習筆記,主要用于記錄自己對知識點的理解和梳理。由于目前仍在學習探索階段,內容中難免存在理解偏差或表述疏漏,懇請各位大佬不吝賜教,多提寶貴意見~ 若有不同看法,歡迎理性交流探討,感謝包容與指正!

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

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

相關文章

區塊鏈密碼學簡介

區塊鏈密碼學簡介 一、對稱密碼算法 概述 對稱密碼算法的主要特點是使用相同的密鑰進行加密和解密。這類算法根據其加密方式大致可以分為兩類:流密碼和分組密碼。區塊鏈技術主要采用分組密碼。流密碼以數據流的形式逐位或逐字節加密,而分組密碼則將數據分成固定大小的塊進行…

GridKernalGateway

GridKernalGateway 是 Apache Ignite 架構中一個關鍵的安全與狀態管理組件&#xff0c;它的作用是 “在公共 API 和內部內核&#xff08;kernal&#xff09;之間建立安全、可控的訪問通道”。 我們可以把它理解為一個 “門衛 狀態哨兵”&#xff0c;確保外部調用不會在 Ignite…

MySQL索引、B+樹相關知識總結

MySQL索引、B樹相關知識匯總一、有一個查詢需求&#xff0c;MySQL中有兩個表&#xff0c;一個表1000W數據&#xff0c;另一個表只有幾千數據&#xff0c;要做一個關聯查詢&#xff0c;如何優化&#xff1f;1、為關聯字段建立索引2、小表驅動大表二、b樹和b樹的區別1、更高的查詢…

Java學習進階 -- 泛型的繼承和通配符及綜合練習

首先&#xff0c;泛型不具備繼承性&#xff0c;但是數據具備繼承性1.核心概念解析泛型不具備繼承性即使類型A是類型B的子類&#xff0c;Generic<A>也不是Generic<B>的子類這是Java泛型的類型安全設計&#xff0c;防止不安全的類型轉換數據具備繼承性泛型容器中的元…

如何實現在多跳UDP傳輸場景,保證單文件和多文件完整傳輸的成功率?

如何實現在多跳UDP傳輸場景&#xff0c;保證單文件和多文件完整傳輸的成功率&#xff1f; 一、前言 UDP&#xff08;User Datagram Protocol&#xff09;是一個輕量、無連接的傳輸協議&#xff0c;廣泛用于低延遲、高吞吐的應用中&#xff0c;如視頻流、實時游戲等。然而&…

【Spring IoC 核心實現類詳解:DefaultListableBeanFactory】

Spring IoC 核心實現類詳解&#xff08;源碼原理&#xff09;作為 Spring 的靈魂&#xff0c;IoC 容器&#xff08;Inversion of Control&#xff09;是整個框架的核心。 那么 IoC 的“心臟”到底是哪個類&#xff1f;它是怎么管理和裝配 Bean 的&#xff1f;本文將從源碼層面深…

為什么開啟JWT全局認證后,CSRF失敗會消失?

這是因為 JWT認證與CSRF校驗的設計邏輯完全不同&#xff0c;當全局啟用JWT認證后&#xff0c;Django的CSRF校驗會被“繞過”或不再生效&#xff0c;具體原因如下&#xff1a; 核心原因&#xff1a;JWT認證不依賴Cookie&#xff0c;無需CSRF保護 1. CSRF的作用場景 CSRF攻擊的前…

寶龍地產債務化解解決方案二:基于資產代幣化與輕資產轉型的戰略重構

一、行業背景與代幣化創新趨勢1.1 房地產債務危機現狀寶龍地產&#xff08;01238.HK&#xff09;截至2024年中債務總額達584億元&#xff0c;其中50.7%為一年內到期債務&#xff0c;但現金儲備僅89.47億元&#xff0c;短期償債覆蓋率不足30%。2025年2月境外債務重組計劃因債權人…

深信服GO面試題及參考答案(下)

Kubernetes 與容器 Kubernetes(簡稱 K8s)是容器編排平臺,而容器是輕量級的虛擬化技術,兩者緊密關聯但定位不同,容器是 K8s 管理的核心對象,K8s 為容器提供了完整的生命周期管理、擴展和運維能力。 容器技術(如 Docker)通過 Linux 命名空間(Namespace)、控制組(CGro…

RAGFoundry:面向檢索增強生成的模塊化增強框架

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 1. 背景與動機 大型語言模型&#xff08;LLMs&#xff09;存在 知識靜…

(第十期)HTML基礎教程:文檔類型聲明與字符編碼詳解

&#xff08;第十期&#xff09;HTML基礎教程&#xff1a;文檔類型聲明與字符編碼詳解 前言 在使用VS Code等現代編輯器生成HTML頁面時&#xff0c;你會發現自動生成的代碼中多了一些看似陌生但又非常重要的標簽。這些標簽不是多余的&#xff0c;而是現代Web開發的標準配置。…

OpenAPI(Swagger3)接口文檔自定義排序(萬能大法,支持任意swagger版本)

前置參考文檔 基于OpenAPI(Swagger3)使用AOP技術&#xff0c;進行日志記錄 使用SpringAOP的方式修改controller接口返回的數據 SpringBoot3集成OpenAPI3(解決Boot2升級Boot3) 總結一句話&#xff1a;既然沒辦法去通過各種方法或者官方的接口去修改接口順序&#xff0c;那我們就…

vue3上傳的文件在線查看

1、npm install vue-office/pdf vue-demi 安裝依賴2、npm install vue-office/excel vue-demi 安裝依賴3、npm install vue-office/docx vue-demi 安裝依賴4、編寫一個通用組件&#xff0c;現在只支持 .docx,.xlsx,.pdf 格式的文件&#xff0c;其他文件渲染不成功<temp…

深度學習中基于響應的模型知識蒸餾實現示例

在 https://blog.csdn.net/fengbingchun/article/details/149878692 中介紹了深度學習中的模型知識蒸餾&#xff0c;這里通過已訓練的DenseNet分類模型&#xff0c;基于響應的知識蒸餾實現通過教師模型生成學生模型&#xff1a; 1. 依賴的模塊如下所示&#xff1a; import arg…

【數據可視化-82】中國城市幸福指數可視化分析:Python + PyEcharts 打造炫酷城市幸福指數可視化大屏

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

TikTok網頁版訪問障礙破解:IP限制到高效運營的全流程指南

在跨境電商與社媒運營的數字化浪潮中&#xff0c;TikTok網頁版因其多賬號管理便捷性、內容采集高效性等優勢&#xff0c;成為從業者的核心工具&#xff0c;然而“頁面空白”“地區不支持” 等訪問問題卻頻繁困擾用戶。一、TikTok網頁版的核心應用場景與技術特性&#xff08;一&…

spring的知識點:容器、AOP、事物

一、Spring 是什么? Spring 是一個開源的 Java 企業級應用框架,它的核心目標是簡化 Java 開發。 它不是單一的工具,而是一個 “生態系統”,包含了很多模塊(如 Spring Core、Spring Boot、Spring MVC 等),可以解決開發中的各種問題(如對象管理、Web 開發、事務控制等)…

HTML ISO-8859-1:深入解析字符編碼標準

HTML ISO-8859-1:深入解析字符編碼標準 引言 在HTML文檔中,字符編碼的選擇對于確保網頁內容的正確顯示至關重要。ISO-8859-1是一種廣泛使用的字符編碼標準,它定義了256個字符,覆蓋了大多數西歐語言。本文將深入探討HTML ISO-8859-1的原理、應用及其在現代網頁開發中的重要…

【計算機網絡 | 第4篇】分組交換

文章目錄前言&#x1f95d;電路交換&#x1f34b;電路交換技術的優缺點電路交換的資源分配機制報文交換&#x1f34b;報文交換技術的優缺點存儲轉發技術分組交換&#x1f426;?&#x1f525;分組交換的過程分組交換解決的關鍵問題傳輸過程的關鍵參數工作原理分組傳輸時延計算網…

LLM - AI大模型應用集成協議三件套 MCP、A2A與AG-UI

文章目錄1. 引言&#xff1a;背景與三協議概覽2. MCP&#xff08;Model Context Protocol&#xff09;起源與動因架構與規范要點開發實踐3. A2A&#xff08;Agent-to-Agent Protocol&#xff09;起源與動因架構與規范要點開發實踐4. AG-UI&#xff08;Agent-User Interaction P…