Python自学入门笔记#函数.5(异常、运算符重载)

本文详细介绍了Python中的错误与异常,包括错误类型如ZeroDivisionError和StopIteration,以及异常处理的try/except语句。同时,讨论了运算符重载的概念,用于自定义对象的行为,如实现数学运算、字符串转换等功能。通过重载repr()和str()函数,可以自定义对象的显示方式,而算数、比较和索引运算符的重载则能增强对象的使用体验。
摘要由CSDN通过智能技术生成

1. 异常(基础)

【什么是错误?】
错误是指由于逻辑或语法错误等,导致一个程序无法正常执行的问题。
【什么是异常?】
异常时程序出错时标识的一种状态,当异常发生时,程序不会再向下执行,而转去调用次函数的地方,待处理相应的错误并恢复为正常状态。

1.1. try语句(通常2种写法)

try/except/else/finally语句
【语法】

try:
	可能触发异常的语句
except 错误类型1 [as 变量1]:
	异常处理语句1
except 错误类型2 [as 变量2]:
	异常处理语句2
except (错误类型3, 错误类型4, ...) [as 变量3]:
	异常处理语句3
...
except:
	异常处理语句other
else:
	未发生异常语句
finally: #一定会执行
	最终语句 

Python中常见错误类型

ZeroDivisionError除(或取模)零
StopIteration迭代器没有更多的值
OverflowError数值运算超出最大限制
IOError输入/输出操作失败
ImportError导入模块错误
GeneratorError生成器发生异常来通知退出
IndexError序列中没有此索引
FloatingPointError浮点计算错误
IndentationError缩进错误
TypeError对类型无效的操作
ValueError传入无效的参数
AssertonError断言语句失败
NameError未声明/初始化对象
AttributeError对象中没有这个属性
KeyboardInterrupt用户中断执行(通常是输入Ctrl+c)

更多见:>>>help(builtins)

1.2. raise语句

【作用】
生成一个错误,让程序进入异常状态
【语法】
raise 异常类型

raise 异常对象

2.运算符重载

【什么是运算符重载】
用自定义的规则实现实例之间的运算符操作或函数操作
【作用】
1. 让实例像数学表达式一样的进行运算操作。
2. 让实例像内建对象一样进行内建函数操作。
3. 让程序简洁易读。

2.1. 对象转字符串函数重载

repr(obj)
str(obj)

【重载方法】
repr() 函数的重载方法:
def repr(self):

str() 函数的重载方法:
def str(self):

注:如果对象没有__str__方法,则用repr(obj)函数的结果代替

2.2. 算数运算符的重载

在这里插入图片描述

def xxx(self, other): #self代表二元运算符左侧,other代表右侧

注:二元运算符的重载方式的参数列表中只能有两个参数

【重载说明】
运算符重载方法的参数已经有固定的含义,不可改变原有意义
除__call__方法外,其他重载方法的参数个数不可改变

2.3. 反向算数运算符重载

在这里插入图片描述

2.4. 一元运算符的重载

在这里插入图片描述

2.5. 比较运算符的重载

在这里插入图片描述

2.6. 位运算符重载

在这里插入图片描述

2.7. 内建函数的重载

在这里插入图片描述

2.8. 数值转换函数重载

在这里插入图片描述

2.9. in/not in运算符重载

在这里插入图片描述

2.10. 索引和切片运算符的重载

在这里插入图片描述

2.11. 函数调用(模拟)重载

在这里插入图片描述

2.12. 属性管理重载

在这里插入图片描述
注:以上四个方法当属性不存在时,需要产生AttributeError异常错误

说明:
__getattr__是在找不到对应属性时才调用,当没有属性时需要产生AttributeError错误
__getattribute__在任何时候都会被调用,当没有属性时需要产生AttributeError错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值