内置函数、可迭代对象、迭代器、异常处理

内置函数、可迭代对象、迭代器、异常处理

一、重要内置函数

1.zip
  拼接多个数据值,将可以循环的数据类型中的元素组成一个个元组,然后返回的元组组成新的列表,只能支持for循环的数据类型,如个数不一一对应,按最短的数据拼接。
eg:
    l1 = [11,22,33,44]
    l2 = ['jason','jia','sumn','tom']
    res = zip(l1,l2)
    print(list(res))   # [(11, 'jason'), (22, 'jia'), (33, 'sumn'), (44, 'tom')]
2.filter 过滤器
  接收一个函数和能够被for循环的数据类型,filter会根据结果过滤不符合条件的数据
  eg:
    l1 = [11,22,33,44]
    res = filter(lambda a : a>22,l1)
    print(list(res))           # [33, 44]
3.sorted 排序
eg:
  l1 = [11,22,33,44]
  res = sorted(l1)
  print(list(l1))     # [11, 22, 33, 44]
4.map() 映射
l1 = [1,2,3,4,5]
res = map(lambda x:x+1,l1)
print(list(res))
5.max/min(最大,最小值)
l1 = [1,2,3,4,5]
# res = map(lambda x:x+1,l1)
# print(list(res))
res = max(l1)
print(res)
其他写法:
d1 = {
    'jason':'123',
    'jia':'111',
    'tom':'222'
}
def func(a):
    return d1.get(a)
res = max(d1,key=func)
print(res)
6.reduce 
# 传多个值,返回一个值
from functools import reduce
    l1 = [11, 22, 33, 44, 55, 66, 77, 88]
    res = reduce(lambda a, b: a + b, l1)
    print(res)

二、常见内置函数

1.基本内置函数

1.int():将数据类型转换为整型
  s1 = '123'
  s1 = int(s1)
  print(type(s1))
2.str()
   将数据类型转换为字符型
3.float()
   将数据类型转换为浮点型
4.bool()
   将数据类型转换为布尔型
5.list()
   将数据类型转换为列表
6.dict()
   将数据类型转换为字典
7.tuple()
   将数据类型转换为元组
8.set()
   将数据类型转换为集合

2.常见内置函数

1.bin() oct() hex()
    print(bin(10))   # 0b1010
    print(oct(10))   # 0o12
    print(hex(10))   # 0xa
2.format 格式化输出
   name = 'jason'
   print(f'最棒的老师:{name}')   # 最棒的老师:jason
3.all() any() 
 all() 主要有一个不满足就是False
 any() 只要有一个满足就是True
 print(all([1,2,4,0]))    # False
 print(any([0,'',1,3]))   # True
4.callable() 判断变量名是否有调用的能力
  # call 调用执行
name = 'jason'
def func():
    print('jason')
print(callable(name))   # False
5.help() 查看函数或者模块用途的说明书
  help(len)
  # len(obj, /)   Return the number of items in a container.
6.round() 浮点数返回值的四舍五入
 print(round(22.3))   # 22

3.陌生内置函数

1.abs() 求绝对值
2.chr() ord()
 chr:以整数作为参数返回对应的ASCII编码字符
 ord:以字符串作为参数返回对应的ASCII编码字符
 print(chr(98))   # b
 print(ord('b'))   # 98
3.dir()
  print(dir(float))
  # ['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__round__', '__rpow__', '__rsub__', '__rtruediv__', '__set_format__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
4.divmod()获取除法之后得到的整除和余数
real_name,more = divmod(99,7)
print(real_name,more)   # 14 1
if more:
    real_name += 1
print(f'{real_name}')   # 15
5.enumerate()枚举,获取索引对应的数据值
l2 = ['jason','jia','sumn','tom']
for i , j in enumerate(l2,33):
    print(i,j)  
#  33 jason
#  34 jia
#  35 sumn
#  36 tom
6.eval() exec()
eval():识别简单结构的代码并执行
exec():识别复杂结构的代码并执行
res = 'print(22)'
print(res)
7.hash() :返回一串看不懂的随机数字
print(hash('jason'))  # 1855843716866043328
print(hash('222'))  # 1915283372970670842
8.isinstance() :判断某个数据值是的属于哪个数据类型
print(isinstance(222, int))  # True
print(isinstance('jason', int))  # False
9.pow() :求幂函数
print(pow(2, 4))    # 16
print(pow(3, 3))    # 27
图片名称

三、可迭代对象

1.迭代就是更新换代,但是每次的更新都是基于上次。类似于我们更新微信版本,没更新一次功能变多但是它依旧是聊天软件。
2.内置方法中有__iter__方法的都叫可迭代对象。通过.__iter__若有则是.__name__叫双下name。
整型、浮点型、布尔型、函数名都为不可迭代对象
字符串、列表、集合、字典、元组、集合、文件都是可迭代对象
'jason'.__iter__()
[1, 2, 3, 4].__iter__()
{2, 3, 4, 5}.__iter__()
{'name': 'jason'}.__iter__()
(1, 2, 3, 4).__iter__()

# 不可迭代
while True:
    print('hello')
    
# 可迭代
count = 0
while count < 6:
    count += 1
    print(count)

四、迭代器对象

1.判断迭代器对象

通过.__iter__和__next__都存在的对象称为可迭代器对象。迭代器对象从集合第一个元素开始访问,直到所有元素被访问结束。
# 既有__iter__又有__next__方法
map().__iter__()
map().__next__()
filter().__iter__()
filter().__next__()

2.可迭代对象和迭代器对象的关系

可迭代对象也是可迭代器对象,如文件。
可迭代对象调用__iter__方式之后就会变成迭代器对象。
d1 = {'name': 'jason', 'pwd': 123}
res = d1.__iter__()
print(res.__next__())   # name
print(res.__next__())   # pwd

3.迭代器对象迭代取值

l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# 将列表的可迭代对象变成迭代器
res = l1.__iter__()
# 计数器
count = 0
# 判断要循环的次数是否是列表的长度
while count < len(l1):
    # 利用迭代器能够取值
    print(res.__next__())
    count += 1

五、for循环内部原理

语法结构:
  for  变量名 in 可迭代对象
1.for循环每次执行会自动将in后的可迭代对象调用__iter__转变成可迭代器对象
2.每次循环会调用__next__取值
3.但是取到最后一个值会报错,__next__会报错,但是for循环那个自动处理异常,使程序不报错

六、异常处理

1.异常
程序在运行过程中下方的运行兰报错导致程序提前结束运行,也就是bug
代码运行一旦遇到异常会直接结束整个代码的运行,我们在写得时候尽量避免bug的出现
2.异常分类
	语法错误:不允许出现 一旦出现立刻改正 
	逻辑错误:允许出现的 代码运行之后才可能会出现
3.异常结构
	错误位置
 	错误类型
 	错误详情
posted @ 2022-10-14 19:06  小王应该在学习!  阅读(73)  评论(0)    收藏  举报