函数内置与迭代器

image

重要函数内置方法

1.abs() 数字的绝对值
2.all() 所有数据内只要有一个为False就为False
	any()	只要数据中有一个True为就返回True
3.ascii () 功能局限
4.bin() 进制转换 十进制转二进制
	oct() 进制转换 十进制转八进制
	hex()	进制转换 十进制转十六进制
	int()	进制和类型转换 其他进制转十进制或者其他类型数据转字符串
	bool() 布尔值
	bytes () 类型转换
  dict() 字典
5.res = bytes ('你好','utf8')
	print(res)
	res = bytes ('你好','utf8')
	print(res)  # 直接打印编码后的二进制

	print(str(res,'utf8'))  # 将二进制转为字符串
6.callable()  # 判断是否用调用功能

	name = 'jason'
	print(callable(name))  #不可以加括号调用
	def index():pass
	print(callable(index))  # 可以调用
 7.chr(数字) ord(字符) 依据ASCII表实现字符与数字的转换
	print(chr(65))  # A
	print(ord('A'))  # 65
 
8.dir() 通过句点符可以获取到数据类型的所有内置方法
9.divmod() 获取除法之后的整数与余数
reamun,move = divmod(991,10)  # 将999除以10 取整数99然后余下1(99,1)赋值前面变量
if move:  # 等于0 就执行加的操作直接打印整数
    reamun += 1
print('总页数%s页'%reamun)
10.enumerate()# 枚举
name_list = ['jason','tony','jrrey','kiven']  #
#需求循环打印出数据值与索引位置
count = 0
for i in name_list:
    print(count , i)
    count += 1
for i , j in enumerate(name_list, 可添加参数):  #循环获取数据值和索引值然后解压赋值给变量 ,参数里可自定义开始位置
    print(i,j)
11.eval() exec()
res = 'print(123)'
eval(res) 可以识别字符中的代码并执行
exec() 识别复杂的

name = 'jason'
print(eval('name'))
12.help() 查看帮助信息
13.isinstance()  判断某个数据是否属于某个数据类型
print(isinstance(1,str))  #False

print(isinstance('你好',str))  #True
13.map() max() min()
14.pow() 数字的几次方



可迭代对象

1.迭代本质
迭代就是更新换代 每次迭代都需要基于上一次的
# 不属于迭代,每次执行不需要根据上一次的结果
while True:
    print('123')

# 属于迭代 每次执行基于上一次的执行结果执行
conut = 0
while conut < 10:
    conut += 1
    print(conut)
2.判读啊可迭代对象
'''内置有__iter__方法的都叫可迭代对象
内置:通过句点符可以点出来的都叫内置
__next__读作双下某某 读作杠杆跟土鳖一样

'''
3.可迭代对象:
 str list dict tuple set  文件
 不可迭代对象:
int float bool  函数名
'''可迭代对象能够支持for循环取值'''



迭代器对象

'''迭代器对象给我们提供了一种不依赖于索引取值的方式
因为有迭代器对象存在可以才可以对无序的数据循环取值
'''
1.如何判断迭代器对象
内置方法有iter和next的称为迭代器对象
2.可迭代对象调用iter()方法后就会变成迭代器对象
3.不使用for循环依次取出
l1 = [1,2,3,4,5]
res = l1.__iter__() # 将可迭代对象转为迭代器对象
count = 0
while count < len(l1): #循环次数需要小于数据个数
    print(res.__next__())  # 迭代取值
    count += 1
    
4.区分可迭代对象与迭代器对象    
l1 = [1,2,3,4,5]


l1 = [1,2,3,4,5]  # 可迭代对象
print(l1.__iter__().__next__())  # 将可迭代对象转成迭代器对象然后调用取值
print(l1.__iter__().__next__())  #还是将可迭代对象转换 生成新的迭代器 从头开始取值
print(l1.__iter__().__next__())
print(l1.__iter__().__next__())
print(l1.__iter__().__next__())
res = l1.__iter__()  #迭代器对象
print(res.__iter__().__next__())   # 迭代器对象调用iter后还是自身,调用取值取一个
print(res.__iter__().__next__())  # 迭代器是自身再次调用取值 会迭代取值取完一个取下一个
print(res.__iter__().__next__())
print(res.__iter__().__next__())
print(res.__iter__().__next__())

5.双下方法可以简写
__iter__ iter()
__next__ next()
6.迭代器对象提供一个不依赖索引取值方式,可迭代对象迭代器对象通过打印无法直接看出内部的情况,可以节省内存、
相当于一个工厂, 要一个数据就造一个数据
print(range(10))  # (0,10)   python3
print(range(10))  #[1,2,3,4,5,6,7,8,9,]
使用双下iter就看不出具体内容

for循环的本质

语法结构
for 变量名 in 可迭代对象:
	for 循环体代码
for自动将in后面的可迭代对象调用双下iter变成迭代器对象
之后每次循环调用next取值
最后没有值会报错for会自动处理改错误,循环正常结束
posted @ 2022-07-11 16:25  懒羊羊A  阅读(37)  评论(0)    收藏  举报