重要内置函数、迭代器、异常捕获

重要内置函数

zip()  映射
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
l1=[11,22,33,44,55]
l2=['a','aa','aaa','aaaa','aaaaa']
l3=[1,2,3,4,5]
res=list(zip(l1,l2,l3))
print(res)
#[(11, 'a', 1), (22, 'aa', 2), (33, 'aaa', 3), (44, 'aaaa', 4), (55, 'aaaaa', 5)]
#如果对应关系缺少时会保留到当前数列
l1=[11,22,33,44,]
l2=['a','aa','aaa','aaaa','aaaaa']
l3=[1,2,3,]
res=list(zip(l1,l2,l3))
print(res)#类似于木桶效应
#[(11, 'a', 1), (22, 'aa', 2), (33, 'aaa', 3)]
filter() 过滤序列
 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
以下是 filter() 方法的语法:
filter(function, iterable)
l1=[11,22,33,44,55]
res=filter(lambda x:x>40,l1)
print(list(res))#[44, 55]
sorted 排序
sorted() 函数对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted(iterable, key=None, reverse=False) #reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认) 
l1=[11,22,44,55,33]
res=sorted(l1)
print(list(res))

常见内置函数

abs() 绝对值
print(abs(-111))#111
all() 所有数据值对应的布尔值为True结果才是True 否则返回False
print(all([0,1,2,3]))#False
print(all([1,2,3]))#True
any()所有数据值对应的布尔值有一个为True结果就是True 否则返回False
print(any([0,None,'',1]))#True
print(any([0, None, '']))#False
bin() oct() hex() int()
bytes() 转换成bytes类型
s1='好好学习 天天向上'
print(s1.encode('utf8'))
print(bytes(s1,'utf8'))
callable() 
callable() 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True
name='jason'
def index():
    print('from index')
print(callable(name))#False
print(callable(index))#True
chr()  ord()  基于ASCII码做数字与字母转换
print(chr(65))#A
print(chr(90))#Z
print(chr(97))#a
print(chr(122))#z
dir()
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息
dir 语法:
dir([object])
print(dir('hello'))
divmod() 
python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
res=divmod(100,2)
print(res)#(50,0)
res=divmod(13,2)
print(res)#(6,1)#适用于页码等
paga,more=divmod(999,2)
if more:
    paga+=1
print('总页码',paga)#总页码 500
enumerate()  枚举
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
a=['aa','aa','aa','aa','aa','aa',]
a=enumerate(a)
print(list(a))#[(0, 'aa'), (1, 'aa'), (2, 'aa'), (3, 'aa'), (4, 'aa'), (5, 'aa')]
eval()   exec() 
eval() 函数用来执行一个字符串表达式,并返回表达式的值
以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
s2 = 'for i in range(100):print(i)'
# eval(s2)  # 只能识别简单的python代码 具有逻辑性的都不行
exec(s2)  # 可以识别具有一定逻辑性的python代码
hash() 哈希加密
print(hash('123321'))#7770933146119379354 不同时间加密结果也不同
id()  input()  isinstance()
Python 中 id() 函数用于获取对象的内存地址。
isinstance()
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。 
isinstance() 方法的语法:
isinstance(object, classinfo)
map() max() min()
open() #打开文件 with open()
pow() 
pow() 方法返回 xy(x 的 y 次方) 的值。
print(pow(2,2))#4
print(pow(2,3))#8
print(pow(2,4))#16
range()
函数语法
range(start, stop[, step])
Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],而xrange返回一个xrange对象,即xrange(3)返回iterator对象,它与Java迭代器类似,并在需要时生成数字。
如果我们需要多次迭代相同的序列,我们更喜欢range(),因为range提供了一个静态列表。xrange()每次重建序列。xrange()不支持切片和其他列表方法。xrange()的优点是,当任务迭代大范围时,它可以节省内存。
在Python 3.x中,范围函数现在执行xrange在Python 2.x中的功能,因此为了保持代码的可移植性,我们可能希望坚持使用范围。所以Python 3.x的范围函数是来自Python 2.x的xrange。
round()
round() 方法返回浮点数x的四舍五入值。
round( x [, n]  )
x -- 数值表达式。
n -- 数值表达式,表示从小数点位数。
print "round(80.23456, 2) : ", round(80.23456, 2)#round(80.23456, 2) :  80.23
sum()
sum() 方法对序列进行求和计算。
print(sum([11,22,33,44,555,666]))#1331
zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

可迭代对象

1可迭代对象
对象内置有__iter__方法的都称为可迭代对象
	1.1内置方法 通过点的方式能够调用的方法
    1.2__iter__ 双下iter方法
2可迭代对象的范围
不可迭代的对象
	int float bool 函数对象
可迭代的对象
	str list dict tuple set 文件对象
3可迭代的含义
	更新换代(每次更新必须依赖上一次的结果)
    手机更新
    可迭代在python 中可以可以理解为是支持For循环

迭代器对象

1.迭代对象
	是由可迭代对象调用__iter__方法产生的
	迭代器对象判断的本质是看是否内置有__iter__和__next__
2.迭代器对象的作用
	提供了一种不依赖于索引取值的方式
 	正因为有迭代器的存在 我们的字典 集合才能够被for循环
3.迭代器对象实操
	 s1 = 'hello'  # 可迭代对象
    res = s1.__iter__()  # 迭代器对象
    print(res.__next__())  # 迭代取值 for循环的本质
	 一旦__next__取不到值 会直接报错
4.注意事项
	可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身

for循环内部原理

for 变量名 in 可迭代对象:
    循环体代码
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理

异常处理

python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。
	异常就是代码运行报错 行业俗语叫bug
	代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
	语法错误
    	不允许出现 一旦出现立刻改正 否则提桶跑路
	逻辑错误
    	允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
	错误位置
 	错误类型
 	错误详情


posted @ 2022-10-14 19:59  冰柠檬檬  阅读(28)  评论(0)    收藏  举报