常见内置函数
abs() 求绝对值
all()所有的数据值都为True的情况下结果才是True
any()所有的数据值只要有一个为True 结果就是True
bin()十进制转其他进制
int()其他进制转十进制
bytes()转换 将人类能读懂的转换成计算机能读懂的 或者将计算机能读懂的转换人类能读懂的
callable()判断某个变量是否可以加括号调用
chr()根据ASCII码将数字转换成英文字母
ord()根据ASCII码将英文字母转换成数字
dir()获取对象内部可以通过句点符获取数据
divmod()获取除法后的整数和余数
enumerate()返回一个枚举的对象
eval() 用于一个字符串的表达式 并返回一个表达式的一个计算结果 只能执行比较简单的
exec() 用于执行存储在字符串和文件中的表达式 能执行比较复杂的
hash() 能够返回一串随机的数字
help() 查看帮助的信息
isinstance() 判断某个数据是否属于某个数据类型
pow() 幂指数 pow(x,y) 得出的结果就是x的y次方
round() 用于内置函数的四舍五入
可迭代对象
迭代就是更新换代 每次迭代的结果都是基于上一次的结果 就象手机经常更新换代。
不属于迭代
while True:
print('哈哈哈')
属于迭代
n=0
while n<10:
print(n)
n+=1
当内置方法内有__iter__方法的都叫可迭代对象
可迭代的对象有:字符串 列表 字典 元组 集合 文件对象(自身就是迭代器对象)
不可迭代对象:整型 浮点型 布尔值 函数名
迭代器对象
1迭代器给我们提供了一个不用依赖索引取值的方式 有了迭代器的存在我们也就可以对字典 元组这类无序类型进行取值
2当你调用内置有显示__iter__和__next__这两个都被称为迭代器对象
两者之间的关系就是当可迭代对象调用__iter__方法之后就会被成为迭代器对象,当迭代器对象调用__iter__方法不管多少次都是迭代器本身不会发生改变
3 迭代对象取值
res = 'jerry'.__iter__() res已经是迭代器对象
print(res.__next__()) j
print(res.__next__()) e
print(res.__next__()) r
print(res.__next__()) r
print(res.__next__()) y
print(res.__next__()) 没有了直接报错
d1 = {'name':'jerry','pwd':123}
res = d1.__iter__()
print(res.__next__())
print(res.__next__())
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
需求:不使用for循环 依次打印出列表中所有的数据值
<1.先将列表变成迭代器对象
res = l1.__iter__()
<2.定义一个计数器
count = 0
<3.编写while循环
while count < len(l1):
print(res.__next__())
count += 1
4迭代器的反复使用
l1=[11, 22 ,33 , 44]
print(l.__iter__().__next__()) 11
print(l.__iter__().__next__()) 11
print(l.__iter__().__next__()) 11
print(l.__iter__().__next__()) 11
每次都会产生一个迭代器对象使得
res=l.__iter__
print(res.__iter__()__next__()) 11
print(res.__iter__()__next__()) 22
print(res.__iter__()__next__()) 33
print(res.__iter__()__next__()) 44
每次使用的都是一个迭代器对象
5 可迭代对象和迭代器对象两者也有简写
res=l.__iter__() 可简写成iter(l)
res.__next__() 可简写成next(res1)
当你对可迭代对象和迭代器对象进行打印的时候是无法直接看出部数据的 这就是两者帮忙进行空间节省 当你需要的时候在帮你打印
for循环的本质
for+变量名+in+可迭代的对象
for循环的代码
for会自动将in后面的数据调用__iter__()变成迭代器对象,
在之后的每次循环调用__next__()取值,
在最后没有值可取的时候__next__()会报错,for能够自行处理这个错误,让循环体正常结束。