可迭代对象
迭代即更新换代 每次的更新都必须依赖于上一次的结果
可迭代对象:
内置__iter__方法的都称之为可迭代对象
内置的意思是可以通过点(.)的方式直接查看到的
'''
针对双下划线开头 双下划线结尾的方法, 最为专业的标准的读法为
双下方法名
面向对象的时候为了与隐藏变量区分后
'''
'''
含有__iter__的有
字符串 列表 集合 字典 元组 文件对象
他们通常为可迭代对象
'''
'''
可迭代对象调用__iter__方法会变成迭代器对象
__iter__方法在调用的时候还有一个简便的写法iter()
一般情况下所有的双下方法都会有一个与之对应的简化版本 方法名+()
'''
迭代器对象
既有__iter__方法 又含有__next__方法
让可迭代对象执行__iter__方法
'''
文件对象本身即是可迭代对象又是迭代器对象
迭代器对象无论执行多少次__iter__方法 还是迭代器对象(本身)
迭代器给我们提供了不依赖于索引取值的方式
'''
缺点:取值不够灵活 一次性的只能往后取,无法预知数据的个数
s = 'jason'
res = s.__iter__()
print (res.__next__())
print (res.__next__())
print (res.__next__())
print (res.__next__())
print (res.__next__())
d = {'username' :'jason' ,'pwd' :123 }
res = d.__iter__()
print (res.__next__())
print (res.__next__())
d = {'username' :'jason' ,'pwd' :123 }
res = d.__iter__()
print (res.__next__())
print (res.__next__())
print (res.__next__())
d = {'username' :'jason' ,'pwd' :123 }
print (d.__iter__().__next__())
print (d.__iter__().__next__())
print (d.__iter__().__next__())
print (d.__iter__().__next__())
print (d.__iter__().__next__())
print (d.__iter__().__next__())
for循环本质
l1 = [1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,11 ,22 ,33 ,44 ,55 ]
1. 先将列表转为迭代器对象
res = l1.__iter__()
2. 循环执行__next__()取值
while True :
print (res.__next__)
for i in l1:
print (i)
'''
for循环内部原理:
1.将关键字in后面的数据先调用__iter__方法转为迭代器对象
2.循环执行__next__方法
3.取完之后__next__会报错 但是for循环会自动捕获该错误并处理
res = 数据.__iter__()
while True:
检测代码是否会报错
res.__next__()
如果报错了则自动处理掉并结束while循环
'''
for 循环本质
d = {'name' :'jason' ,'pwd' :123 ,'hobby' :'read' }
res = d.__iter__()
while True :
try :
print (res.__next__())
except StopIteration as e:
break
for i in d:
print (i)
异常捕获
代码运行出错会导致异常 异常发生后如果没有解决方案则会到底整个程序结束
1. traceback
翻到最下面从下往上的第一个蓝色字体鼠标左键点击即可可跳转到错误的代码所在的行
2. XXXError
错误的类型
3. 错误类型冒号后面的内容
错误的详细原因(这个地方是主要的错误 仔细看完后可能就会找到解决的方法)
1. 语法错误
这个是非常不被允许的 出现应立刻修改!!!
2. 逻辑错误
可以被允许的 出现了之后尽快修改即可
eg:
print (idna)
l = [11 ,22 ,33 ]
print (l[100 ])
d = {'username' :'jason' }
print (d['xxx' ])
int ('abc' )
'''
基本语法结构
try:
可能会出错的代码
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
except 错误类型 as e:
出错之后对应的处理机制(e是错误的详细信息)
'''
try :
print (name)
except Exception:
print ('什么错误都无所谓!!' )
"""
异常捕获句式和万能异常
1.有可能会出现错误的代码才需要被监测
2.被监测的代码一定要越少越好
3.异常捕获使用频率越低越好
"""
try :
被监测的代码
except 错误类型 as e:
...
else :
被监测的代码不报错的时候执行
finally :
无论是否报错最终都会执行
name = 'jason'
assert isinstance (name,str )
raise 错误类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)