迭代器和异常捕捉

可迭代对象

可迭代对象的定义:

  内置有__iter__()方法的都可以称之为是可迭代对象。

可迭代对象有字符串、列表、元组、字典、集合等

迭代器对象

迭代器对象:迭代器

迭代器对象的定义:

  既内置了__iter__()方法,又内置了__next__方法就是迭代器对象

迭代器是一种不依赖于索引取值的方式

一次调用可供持续取值,重新调用则会重置

l1 = [11, 33, 44, 5, 66]
res = l1.__iter__()
print(res.__next__())  # 11
print(res.__next__())  # 33
print(l1.__iter__().__next__())  # 11

异常捕获

异常就是错误发生的信号,如果不做处理,后面的程序就无法正常运行

1.异常分类 

  1.Traceback

  是异常位置所在处,可以直接定位到异常发生的位置

  2.XXXError

  错误的类型

  3.XXXError后面的详细信息

  错误的描述,一般我们直接看错误的详细信息都可以定位原因

  4.异常的类型

  1.语法错误:坚决不允许,容易解决,借助于pycharm工具就可以很容易的定位到

  2.逻辑错误:是允许出现的,但是我们在写代码的时候,尽量的避免逻辑错误

 2.XXXError错误类型

1.NameError  变量名错误

2.IndexError  索引错误

3.KeyError  取值错误

4.ZeroDivisionError

3.解决错误

预测可能出现的错误提前解决让代码正常运行

"""
  语法结构:
  try:
    被监测的代码:一般是可能会发生的错误
  except 错误类型1 as e:
    print(e)
  except Exception as e:   # 能够接收所有的错误类型
    print(e)
  else:
    # 有异常时不执行,不能和try 单独使用
  finally:
    # 不管有无异常都会执行
"""

assert :断言你一定是正确的,成功的,可行的

# assert 条件  # 条件必须成立,如果不成立,代码在这一行直接中断

for 循环原理

测试题(不用for 打印列表内容)

方法1.while循环

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
res = l.__iter__()
while True:
    try:
        print(res.__next__())     # 打印列表所有值
    except Exception:    # 直到读取完报错时,跳出循环结束读取
        break

方法2.递归函数

l = [1, 2, 3, 4, 5, 6]

res = l.__iter__()
def a(x):
    try:
        print(x.__next__())
    except StopIteration:
        return
    a(x)

for循环的本质:

  1.先把关键字in后面的变量调用__iter__()方法变成迭代器对象

  2.内部开始循环__next__()取值

  3.当值取完之后代码会报错,一旦报错,我们做异常处理直接结束掉循环

 

posted @ 2023-06-05 21:09  Maverick-Lucky  阅读(17)  评论(0)    收藏  举报