1.匿名函数
匿名函数:其实就是没有名字的函数
# 匿名函数也是必须加括号才能使用
语法格式:
lambda 形参:返回值
def index(形参):
返回值
例:res=lambda x:x**2
常见的内置函数:
# 配合匿名函数一起使用的内置函数
1.map()
2.zip()
3.max()
4.min()
5.filter()
1. map()
使用map函数实现将列表li中的每隔元素都进行平方
li=[1,2,3,4,5]
res=map(lambda x:x**2,li)
print(list(res)) # 输出劫过为[1,4,9,16,25]
2. zip拉链
使用zip函数实现将两个列表中的相同索引的元素放到一个元组中
lis1=[1,2,3,4,5]
lis2=['a','b','c','d','f','g']
res=zip(lis1,lis2)
print(list(res)) # 输出结果:[(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'f')]
3. max,min
使用max,min函数判断字典中数据的大小
d={ 'kevin':10000,
'jack':9000,
'mike':2000,
'tank':12000
}
res=max(d)
res=min(d)
print(res,res1) # 输出结果:tank jack
res=max(d,key=lambda x:d[x])
res1=min(d.key=lambda x:d[x])
print(res,res1) # 输出结果:tank mike
4.filter
使用filter函数将大于30的数字去除留下大于30的数字
res=[11,22,33,44,55]
res=filter(lambda x:x>30,res)
print(list(res)) # 输出结果:[33,44,55]
2.可迭代对象
1. 迭代:更新换代,每一次的更新都是基于上一次的结果
2.可迭代对象:
内置方法中有__iter__方法的都可以称为可迭代对象
如何查看类型中是否有__iter__方法?
a=1 # 定义一个整型
例:a.__iter__() 查看整型中是否有iter函数
## 在八大数据类型中:
1.可迭代对象:str,list,dict,tuple,set
##### 可迭代对象使用__iter__函数就变成了迭代器对象
__iter__开头的方法都有一个与之对应的简写:iter(方法名)
3.迭代器对象
1.迭代器:
内置有__iter__方法还内置有__next__方法
2.如何转为迭代器对象:
有可迭代对象调用__iter__()方法转为迭代器对象
4.for循环内部原理
for循环内部原理:
1.首先把关键in后面的可迭代对象转为迭代器对象
2.while循环取值__next__迭代取值,当next取值完毕的时候会报错
3.当内部报错的时候,for循环进行了异常捕捉
5.异常捕捉
1. 什么是异常:
异常就是错误发生的信号,如果不对该信号进行处理,那么异常发生之后的代码都不能正常运行
2.异常的信息:
1.Traceback:追踪信息,异常发生的位置
File"D:/python/day17/for循环内部原理.py",line21,in <model>
# 错误发生信息有很多行,找到最后一行点击就可以跳到错误发生的那行代码位置
2.异常发生的类型:
xxxError:异常发生的类型
例:NameError,KeyError......
3.错误发生的详细信息(最重要的:一般情况从这里就可以知道错误发生的原因)
3.异常的分类:
1.语法错误
# 是代码运行过程中一开始就不允许的,只要语法错误,代码一定不能够运行
# 通过代码提升就知道语法错误的原因
2.逻辑错误
# 在编码过程中,逻辑错误是允许出现的,但是我们应避免逻辑错误出现的可能性
4.如何进行异常捕捉
语法格式:
try:
代码
exception Exception as e:
print(e)
例:
try:
ls=[1,2,3]
print(ls[4]) # IndexError
except Exception as e;
print(e)
else:
# 当被检测的代码没有异常的时候会走这个语法
print('这是else语法')
finally:
# 不管被检测的代码是否有异常都会走
print('这是finally语法')
print(123)
'''
1. 只能当你的被监测代码可能会出现,但是,又不想让它报错,这个时候使用异常捕捉是最合适的
2. 异常捕捉的代码尽量少写