常用的内置函数、可迭代对象、迭代器对象、for 循环的内部机理和异常捕捉

常用的内置函数、可迭代对象、迭代器对象、for 循环的内部机理和异常捕捉

一、常用的内置函数

# 1.map
	"""循环获取每个元素,并传递给匿名参数其返回值"""
# 2.zip(iter1 [,iter2 [...]])   拉链
	"""
	zip可以将各个可迭代对象中的元素每个中抽一个出来组成元组的形式放在一起,
	组成元组的个数取决于,最短可迭代对象里面元素的个数
	"""
    # 案例
	l = [11, 22, 33, 44, 55, 66, 77]
    name_list = ['jason', 'kevin', 'tony']
    l1 = [1, 2, 3, 4, 5, 6, 7]
    l2 = [8, 7, 6, 4, 3, 2, 1]
    res = zip(l, name_list, l1, l2)
    print(list(res)) 
    #[(11, 'jason', 1, 8), (22, 'kevin', 2, 7), (33, 'tony', 3, 6)]

# 3.max min
	案例1:
    l = [1, 3, 4, 5]
    print(max(l))  # 5
    案例2:
    max(iterable, *[, default=obj, key=func]) 
    d = {
    'jason':3000,
    'Bevin':1000000,
    'Oscar':10000000000,
    'aerry':88888
    }
    print(max(d,key=lambda key:d[key]))  # Oscar
    
# 4.reduce(function, sequence[, initial])  归总
	"""reduce能够将sequence序列中所有的数值加起来,也可以添加一个初始值,但不是强制"""
    # 案例:将100和列表内的数据求和
        from functools import reduce
        l = [1, 2, 3, 4]
        n = reduce(lambda x, y: x + y, l, 100)
        print(l) #110  
# 5.filter(function or None, iterable)
	"""filter函数可以将可迭代对象里面的数,根据前面的函数功能过滤掉"""
    	l = [1, 4, 5, 7]
        res= list(filter(lambda x:x<4, l)) 
        print(res)  #[1]

二、可迭代对象

# 1.迭代的定义
	迭代即更新换代,每一次更新换代都是基于上一次基础之上的
	判断:
    	while True:
            print(2)  # 不是迭代,因为没有基于上一次结果
# 2.可迭代对象的定义
	内置有__iter__()方法的都称之为可迭代对象
	可迭代的对象.__iter__(),可以把可迭代对象变成迭代器对象
# 3.可迭代对象的数据类型
	字符串、列表、字典、元组、集合、文件
# 4.__iter__方法的读法和简单写法
    针对双下划线开头,双下划线结尾的方法,最专业的读法是双下xx方法
    简单的写法:iter()

三、迭代器对象

# 1.定义
	既含有__iter__方法,又含有__next__方法
# 2.生成方法
	让可迭代对象执行__iter__方法,即可生成迭代器对象
# 3.迭代器的价值
	为用户提供了不依赖于索引取值的办法
# 4.可转成迭代器的数据类型
	字符串、列表、元组、字典、集合
# 5.易错案例
	res = [1, 2, 3, 4]
    print(res.__iter__().__next__())  # 1
    print(res.__iter__().__next__())  # 1
    print(res.__iter__().__next__())  # 1
    print(res.__iter__().__next__())  # 1
# 补充
	文件本身是可迭代对象,又是迭代器对象
	可迭代对象无论执行多少次__iter__方法,还是迭代器本身

四、for循环的内部机理

# for 循环的内部机理
	"""
		1.将in后面的数据先调用__iter__方法转为迭代器对象
		2.循环执行__next__方法
		3.取完之后__next__会报错,但是for循环会自动捕获该错误
	"""
# 详情
    res = 数据.__iter__()
    while True:
        检测代码是否会报错
        print(res.__next__())
        如果报错了则自动处理掉并结束while循环

五、异常捕捉

# 1.异常的定义
	代码运行出错会导致异常,异常发生后如果没有解决方案会导致整个程序结束
# 2.异常的结构的三个重要组成部分
	Traceback:
        翻到Trancback最下面,点击遇到的第一组蓝色字体会直接跳转到报错的那一行
     XXXError:
        代表错误的类型
     XXXError后面的内容:
    	错误的详细信息(仔细看就能找到解决问题的办法)
# 3.异常的种类
	语法错误:
    	不被允许的,出现之后立刻修改
     逻辑错误:
    	可以被允许,出现之后尽快修改(修改逻辑的过程其实就是从头到尾理清思路的过程)
# 4.异常捕获的语法结构
	"""
	try:
		可能出错的代码
	except 错误的类型 as e:
		出错之后的应对机制(e是错误的详细信息)
	except 错误的类型 as e:
		出错之后的应对机制(e是错误的详细信息)
	"""
# 5.万能异常的捕获句式
	"""
	try:
		可能出错的代码
	except Exception:
		应对的方法
	"""
# 6.异常捕获和万能异常捕获的注意事项
	"""
	   有可能出错的代码才需要捕获
	   被监测的代码越少越好
	   异常捕获的功能使用的越少越好
	"""
	

posted @ 2021-11-19 21:34  recordlife  阅读(80)  评论(0)    收藏  举报