今日内容概要
- 重要内置函数
- 常见内置函数
- 可迭代对象
- 迭代器对象
- for循环的本质
- 异常
今日内容详细
重要内置函数
1.zip()
zip 函数是可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器,类型为元组。
# 两个可迭代对象数据值个数相同的情况下
l1 = [1, 2, 3]
l2 = ['jason', 'jack', 'tony']
res = zip(l1, l2)
# 此时的res是一个迭代器对象 需要转换类型才能看到具体的数据
print(list(res)) # [(1, 'jason'), (2, 'jack'), (3, 'tony')]
# 两个可迭代对象数据值个数不相同的情况下
l3 = [1, 2, 3]
l4 = ['jason', 'jack']
res1 = zip(l1, l2)
print(list(res1)) # [(1, 'jason'), (2, 'jack')] 多余的丢弃
3.filter
filter 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
语法:filter(function, iterable)
参数:function是进行判断的条件,可以是匿名函数,function必须返回一个bool变量,当function判断为True时,该元素进行保留,当function判断为False时,该元素不保留。
l5 = [11, 22, 33, 44 ,55]
res2 = filter(lambda x:x > 30, new_list)
# 特别需要注意到一点是在Python2.7版本中filter()返回列表,而在Python3.x版本中filter()返回迭代器对象,我们可以使用内置函数list()手动将filter迭代器对象转化为列表
print(list(res2)) # [33, 44, 55]
4.sorted
sorted 函数是对可迭代对象进行排序。
语法:sorted(iterable, cmp=None, key=None, reverse=False)
参数:
iterable是待排序的可迭代对象。
cmp是比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key是排序关键字,主要是用来进行比较的元素,只有一个参数,具体的函数的参 数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse是排序规则reverse = True 降序 , reverse = False 升序(默认)
l6 = [33, 22, 55, 11, 88]
res = sorted(l6)
print(res) # 默认是升序 [11, 22, 33, 55, 88]
常见内置函数
1.abs()
其主要作用是对传入的参数,返回其的绝对量或绝对值
2.all()
所有数据值对应的布尔值为True结果才是True 否则返回False
3.any()
所有数据值对应的布尔值有一个为True结果就是True 否则返回False
4.bin() oct() hex() int()
bin()转换为二进制 oct()转换为八进制 hex()转换为十六进制 int()转换为十进制
5.bytes()
转换成bytes类型
6.callable()
用于检查一个对象是否是可调用的。如果返回 True,仍然可能调用失败;但如果返回 False,调用对象绝对不会成功
7.chr() ord()
基于ASCII码表做数字与字母的转换
chr(数字) 返回值是对应的字符
ord(字符) 返回值是对应的数字
8.dir()
返回括号内对象能够调用的名字
9.divmod()
返回元组 第一个数据为整除数 第二个是余数
print(divmod(100, 3)) # (33, 1)
10.enumerate()
返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过可迭代对象迭代获得的值
11.eval() exec()
能够识别字符串中的python代码并执行
eval() 只能识别简单的python代码 具有逻辑性的都不行
exec() 可以识别具有一定逻辑性的python代码
12.hash()
哈希加密
用于获取取一个对象(字符串或者数值等的哈希值
13.isinstance()
判断是否是一个已知类型
a = 100
res = isinstance(a, int)
print(res) # True
14.id() input() map() max() min() open() range() zip()
15.pow()
返回一个数的次幂,可以利用pow函数计算一个数的平方,3次方等常见的操作
print(pow(2, 2)) # 4
print(pow(2, 3)) # 8
16.round()
返回四舍五入值 # 其实是五舍六入
print(round(98.3)) # 98
print(round(98.6)) # 99
17.sum()
对序列进行求和计算
可迭代对象
1.可迭代对象
对象内置有__iter__方法的都称为可迭代对象
'''
内置方法 通过点的方法能够调用的方法
__iter__ 通常叫双下iter方法
'''
2.可迭代对象的范围
不可迭代对象
int float bool 函数对象
不可迭代对象
str list dict tuple set 文件对象
3.可迭代的含义
'''
迭代:更新换代(每次更新都必须依赖上一次的结果),如手机app更新
'''
可迭代在python中可以理解为是否支持for循环
迭代器对象
1.迭代器对象
是由可迭代对象调用__iter__方法产生的
迭代器对象判断的本质是看是否内置有__iter__和__next__
2.迭代器对象的作用
提供了一种不依赖于索引取值的方式
正因为有迭代器的存在 我们的字典 集合才能够被for循环
3.迭代器对象实操
s1 = 'hello' # 字符串是可迭代对象
res = s1.__iter__() # 将s1转换成迭代器对象 并赋值给res
print(res.__next__()) # 迭代取值 相当于for循环的本质
当__next__取不到值的时候 会直接报错
4.注意事项
可迭代对象调用__iter__会成为迭代器对象 如果成为迭代器对象后还调用__iter__不会有任何的变化 还是迭代器对象本身
s1 = 'hello'
res = s1.__iter__().__iter__()
# 没有任何作用和调用一次__iter__一样
count = 0
while count < 5:
print(res.__next__())
count += 1
for循环的本质
for 变量名 i in 可迭代对象:
循环体代码
'''
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获异常并处理
'''
异常捕获/处理
1.异常
异常就是代码运行报错 行业俗语叫bug 代码运行过程中一旦遇到异常会直接结束整个程序的运行 在编写代码的过程中要尽可能的避免
2.异常分类
语法错误
不允许出现 一旦出现立刻改正 否则提桶跑路
逻辑错误
允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
错误位置 告诉你哪行代码出现问题
错误类型 什么错误类型
错误详情 为什么错误