关于“Python”的核心知识点整理大全24-2

简介: 关于“Python”的核心知识点整理大全24

关于“Python”的核心知识点整理大全24-1 https://developer.aliyun.com/article/1424790

10.3 异常

Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知 所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行; 如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告 诉Python发生异常时怎么办。使用了try-except代码块时,即便出现异常,程序也将继续运行: 显示你编写的友好的错误消息,而不是令用户迷惑的traceback。

10.3.1 处理 ZeroDivisionError 异常


下面来看一种导致Python引发异常的简单错误。你可能知道不能将一个数字除以0,但我们 还是让Python这样做吧:

division.py

print(5/0)

显然,Python无法这样做,因此你将看到一个traceback:

Traceback (most recent call last):
 File "division.py", line 1, in <module>
 print(5/0)
1 ZeroDivisionError: division by zero

在上述traceback中,1处指出的错误ZeroDivisionError是一个异常对象。Python无法按你的 要求做时,就会创建这种对象。在这种情况下,Python将停止运行程序,并指出引发了哪种异常, 而我们可根据这些信息对程序进行修改。下面我们将告诉Python,发生这种错误时怎么办;这样, 如果再次发生这样的错误,我们就有备无患了。

10.3.2 使用 try-except 代码块

当你认为可能发生了错误时,可编写一个try-except代码块来处理可能引发的异常。你让 Python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。 处理ZeroDivisionError异常的try-except代码块类似于下面这样:

try:
 print(5/0)
except ZeroDivisionError:
 print("You can't divide by zero!")

我们将导致错误的代码行print(5/0)放在了一个try代码块中。如果try代码块中的代码运行 起来没有问题,Python将跳过except代码块;如果try代码块中的代码导致了错误,Python将查找 这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。 在这个示例中,try代码块中的代码引发了ZeroDivisionError异常,因此Python指出了该如 何解决问题的except代码块,并运行其中的代码。这样,用户看到的是一条友好的错误消息,而 不是traceback:

You can't divide by zero!

如果try-except代码块后面还有其他代码,程序将接着运行,因为已经告诉了Python如何处 理这种错误。下面来看一个捕获错误后程序将继续运行的示例。

10.3.3 使用异常避免崩溃

发生错误时,如果程序还有工作没有完成,妥善地处理错误就尤其重要。这种情况经常会出 现在要求用户提供输入的程序中;如果程序能够妥善地处理无效输入,就能再提示用户提供有效 输入,而不至于崩溃。 下面来创建一个只执行除法运算的简单计算器:

division.py
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
1 first_number = input("\nFirst number: ")
if first_number == 'q':
 break
2 second_number = input("Second number: ")
if second_number == 'q':
 break
3 answer = int(first_number) / int(second_number)
 print(answer)

在1处,这个程序提示用户输入一个数字,并将其存储到变量first_number中;如果用户输 入的不是表示退出的q,就再提示用户输入一个数字,并将其存储到变量second_number中(见2)。 接下来,我们计算这两个数字的商(即answer,见3)。这个程序没有采取任何处理错误的措施, 因此让它执行除数为0的除法运算时,它将崩溃:

Give me two numbers, and I'll divide them.
Enter 'q' to quit.
First number: 5
Second number: 0
Traceback (most recent call last):
 File "division.py", line 9, in <module>
 answer = int(first_number) / int(second_number)
ZeroDivisionError: division by zero 

程序崩溃可不好,但让用户看到traceback也不是好主意。不懂技术的用户会被它们搞糊涂, 而且如果用户怀有恶意,他会通过traceback获悉你不希望他知道的信息。例如,他将知道你的程 序文件的名称,还将看到部分不能正确运行的代码。有时候,训练有素的攻击者可根据这些信息 判断出可对你的代码发起什么样的攻击。

目录
相关文章
|
2月前
|
存储 Python 容器
Python新手入门,这些基础知识点你掌握了吗?
【6月更文挑战第12天】Python是新手友好的编程语言,具备解释型、面向对象、动态类型和跨平台特性。基础知识包括:变量(如整数、浮点数、字符串、列表、元组、字典和集合),运算符与控制流(如条件语句和循环),以及函数的定义与调用。要精通Python,还需学习更多如面向对象编程、模块、文件操作等内容。开始你的Python学习之旅吧!
26 0
|
7天前
|
存储 Python
Python时间模块四大必备知识点
Python时间模块四大必备知识点
18 4
Python时间模块四大必备知识点
WK
|
1天前
|
存储 机器学习/深度学习 JSON
Python入门知识点
Python入门覆盖历史、设计理念、变量、数据类型、控制结构等。了解Python的发展,掌握动态类型的灵活性,熟悉整数、浮点数、字符串等数据类型。学会if/else、for/while循环构建逻辑流程,使用def定义函数,lambda快速创建匿名函数。通过类实现面向对象编程,利用模块和包组织代码。掌握try-except处理异常,open()进行文件操作。利用标准库和第三方库增强功能,理解集合、字典、列表推导式的应用,深入魔法方法、递归、装饰器等高级特性,以及上下文管理器和字符串、列表、元组的操作技巧。
WK
7 0
|
1月前
|
缓存 网络协议 Linux
Linux、Python、计算机网络中的常见知识点
Linux、Python、计算机网络中的常见知识点
|
1月前
|
算法 Java Linux
python中的面试常考知识点
python中的面试常考知识点
|
2月前
|
数据采集 机器学习/深度学习 数据挖掘
python运用知识点说明
Python涵盖广泛,从基础语法(变量、数据类型、字符串操作)到高级特性(装饰器、迭代器、闭包)。常用库包括NumPy, Pandas(数据处理),Scikit-learn, TensorFlow(机器学习),Django, Flask(Web开发),Scrapy(网络爬虫)。应用于Web开发、数据分析、系统运维、游戏开发和网络爬虫。Python历经1.x、2.x到3.x版本,3.x引入重大更新,强调Unicode和函数打印等,与2.x不兼容。掌握这些能提升开发效率。【6月更文挑战第4天】
37 2
|
3月前
|
Python
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
最新用Python做一个变态版的《超级玛丽》游戏,面试必备知识点
|
3月前
|
数据可视化 Python
Python模型评估与选择:面试必备知识点
【4月更文挑战第17天】本文深入探讨了Python模型评估与选择在面试中的关键点,包括性能度量、过拟合与欠拟合识别、模型比较与选择、模型融合和偏差-方差权衡。强调了避免混淆评估指标、忽视模型验证和盲目追求高复杂度模型的常见错误,并提供相关代码示例,如交叉验证、网格搜索和超参数调优。通过理解这些概念和技巧,可在面试中展示出色的数据科学能力。
75 12
|
3月前
|
存储 JSON 数据格式
Python知识点——高维数据的格式化
Python知识点——高维数据的格式化
39 0
|
3月前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
35 0