个人网站规划书模板,怎么做网页游戏的托,seo网站优化做什么,食品经营许可网站增项怎么做Python 函数式编程与 OOP 的选择(必看)
在学习 Python 以及编写代码的过程中#xff0c;作者发现#xff0c;对于小型项目或简单脚本#xff0c;并不一定需要使用面向对象编程#xff08;OOP#xff09;#xff0c;可以通过函数式编程完成任务#xff0c;代码简洁、易懂…Python 函数式编程与 OOP 的选择(必看)
在学习 Python 以及编写代码的过程中作者发现对于小型项目或简单脚本并不一定需要使用面向对象编程OOP可以通过函数式编程完成任务代码简洁、易懂开发较为快速。
如果项目包含较多功能模块、需要管理大量数据或状态或定义许多相关功能使用面向对象编程OOP将使代码更易于管理和扩展。
本篇文章重点讲解 Python 异常处理机制如果当前项目不涉及面向对象知识掌握前面的文章到这一部分即可。后续文章会深入讨论面向对象编程进一步提升你在项目中的开发能力。如果你觉得当前项目无需 OOPpython入门学到这里足矣。
PS仅为作者的个人观点供参考 Python 异常处理详解
在 Python 中异常处理是指程序在运行时遇到错误时采取的一种机制目的是防止程序崩溃。异常处理可以帮助开发者捕捉错误并采取适当的行动从而保证程序的正常运行。
为什么需要异常处理
程序稳定性异常处理使得程序即使遇到错误也能继续执行而不会突然崩溃。错误定位通过异常处理能够清晰地记录错误的发生地点方便排查和修复问题。用户体验错误信息可以被捕捉并友好地提示用户避免程序因错误直接退出。 Python 异常处理的基本结构
Python 中的异常处理机制使用 try、except、else 和 finally 关键字。
try用于检测可能发生异常的代码块。except用于捕捉异常并进行相应的处理。else在没有异常发生时执行的代码块可选。finally无论是否发生异常都会执行的代码块通常用于资源清理释放文件、数据库连接等。
基本语法结构
try:# 可能会发生异常的代码
except 捕获的异常类型:# 发生异常时执行的代码
else:# 如果没有异常发生执行此部分代码
finally:# 不论是否发生异常都会执行此部分代码异常类型
Python 中有多种内置异常类型例如
ZeroDivisionError除以零的错误。ValueError传入不合适的值时发生的错误。TypeError数据类型错误。FileNotFoundError文件未找到错误。IndexError访问列表元素时下标越界。KeyError字典中没有指定的键。IOError输入输出错误如文件读写失败。 捕获单个类型的异常
只捕获ZeroDivisionError类型的错误其他错误则不会捕获 try:x 10 / 0 #只会捕获这类型的错误
except ZeroDivisionError:print(不能除以零)输出示例 因为10不能除以0所以异常被捕获到
不能除以零解释
捕获代码 x10/0 捕获异常类型为ZeroDivisionError 如果捕获到异常输出不能除以零 捕获所有类型的异常
捕获python所有异常如果有一个错误发生后续的代码会被跳过 try:x 10 / 0 #只会捕获这类型的错误1a错误命名 #上面有错误这个就被跳过了
except Exception as e:print(捕获到异常,e)
输出示例(因为第一行就错了就被捕获到异常直接跳过错误代码后面的代码)
捕获到异常 division by zero解释
捕获代码 x10/0 Exception表示捕获所有异常,如果捕获到异常输出捕获到异常和捕获的异常信息 捕获多个异常
你可以通过多个 except 子句来捕获不同类型的异常或者使用一个 except 捕获所有异常
可理解为elif多条件判断语句 try:x 10 / 0
except ZeroDivisionError: #捕获ZeroDivisionError错误1print(不能除以零)
except Exception as e:#捕获所有错误2print(f发生了一个错误{e})输出示例
不能除以零解释
捕获代码 x10/0 捕获异常类型为ZeroDivisionError则输出不能除以零 以及
捕获异常除了ZeroDivisionError之外的所有异常捕获到异常则输出发生了一个错误和异常信息
except Exception as e 捕获所有异常后将异常信息赋值给e 和with有异曲同工之处 else 和 finally
else如果没有发生异常则执行 else 语句块中的代码。else 语句块是可选的。finally无论是否发生异常都会执行 finally 语句块中的代码。常用于资源的清理操作如关闭文件、网络连接等。 try:x 10 / 2
except ZeroDivisionError:print(不能除以零)
else:print(没有异常发生结果是, x)
finally:print(都执行不管是否发生异常。)自定义异常(了解即可)
有时我们需要根据自己的需求定义异常类型。可以通过继承 Exception 类来创建自定义的异常。
class MyCustomError(Exception):def __init__(self, message):self.message messagesuper().__init__(self.message)try:raise MyCustomError(这是自定义的错误)
except MyCustomError as e:print(f捕获自定义异常{e})异常的传递了解即可
当一个异常在当前函数中未被捕获时它会被传递到上一级调用函数直到被捕获或程序终止。
def func_a():try:1 / 0except ZeroDivisionError:print(ZeroDivisionError caught in func_a)def func_b():func_a()func_b()典型的异常处理案例
假设我们有一个程序它要求用户输入两个数字并进行除法操作。我们需要处理用户输入无效数据如字符串以及除数为零的情况。
def divide_numbers():try:num1 float(input(请输入第一个数字))num2 float(input(请输入第二个数字))result num1 / num2except ValueError:print(输入无效请输入有效的数字。)except ZeroDivisionError:print(除数不能为零)else:print(f结果是{result})finally:print(程序执行完毕。)# 调用函数进行测试
divide_numbers()代码解析 输入与转换程序要求用户输入两个数字并将输入的字符串转换为浮动类型。如果输入的内容无法转换为数字将抛出 ValueError。 除法计算尝试计算两个数字的商如果第二个数字为零则抛出 ZeroDivisionError。 异常捕捉与处理 ValueError当用户输入无效数字时捕获并给出提示。ZeroDivisionError当用户尝试除以零时捕获并给出提示。 else如果没有发生异常则输出结果。 finally无论是否发生异常都会输出“程序执行完毕”。 总结
异常处理通过 try、except、else 和 finally 来处理可能发生的错误保证程序的正常运行。捕获所有异常一般最常用Exception捕获所有类型的错误。如果写不同的捕获错误代码过于冗余异常类型Python 提供了丰富的内置异常类型可以针对不同的错误进行捕获和处理。自定义异常可以通过继承 Exception 类来创建自己的异常类型。else 和 finally分别用于无异常时的处理和无论是否发生异常都要执行的代码块。
通过掌握异常处理我们可以更好地控制程序中的错误使得程序更加健壮、稳定。