「Python」常见内置函数 可迭代对象 迭代对象 for循环的本质

本文介绍了Python的常见内置函数,如abs(), all(), bin(), int(), bytes()等,并详细讲解了可迭代对象的概念、迭代器对象的使用,以及for循环的工作原理。通过示例代码展示了如何判断和操作可迭代对象,强调了迭代器对象在处理无序类型数据时的作用。" 128257779,6679238,测绘程序设计:椭球面弧长计算(C# & Python),"['测绘', '程序设计', 'GIS', 'C#编程', 'Python编程']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见内置函数

内置函数:

提前定义好的 直接食用即可

abs() 求绝对值

 abs() 求绝对值
 print(abs(-99)) #99

2.all() 与 any() 判断容器内所数据值对应的布尔值是否为true

 print(all([1,2,3,4,5,0]))       #false
 print(all([1,2,3,4,5]))     #true

 any()     所有数据值只要有一个为True 结果为true
 print(any([1,2,3,4,5,0]))   #true
 print(any([1,2,3,4,5])) #true

3.bin() oct() hex() 十进制转其他进制

 print(bin(10))  # 0b1010
 print(oct(10))  # 0o12
 print(hex(10))  # 0xa

4.int() 类型转换 其他进制转十进制

print(int(0b1010))	#10
print(int(0o12))	#10
print(int(0xa))		#10

5.bytes() 类型转换

res = bytes('现在有多苦 将来就有多轻松', 'utf8'))
print(res)
res1 = bytes(res,'utf8')
print(res1)

6.callable() 判断某变量是否可以加括号调用

name = 'jason'
def inex():
    print('from index')
print(callable(name))	#False
print(callable(index))	#True

7.chr() ord() 依据ASCII表实现字符与数字的转换

 print(chr(65))  # A      65~90
 print(chr(97))  # a      97~122
 print(ord('A'))   #65
 print(ord('a'))   #97

8.dir() 获取对象内部可以通过句点符获取的数据

 print(dir(str)

9.divmod() 获取除法之后的整数和余数

real_num, more = divmod(872, 10)
if more:
    real_num += 1
print('总页数:%s'%real_num)
# 总页数:88

10.enumerate() 枚举

 name_list = ['john', 'joe', 'jojo']
 需求:循环打印出数据值并且对应的索引值
 for i, j in enumerate(name_list, 1):       #默认从0开始 可以自定义
     print(i, j)
# 1 john
# 2 joe
# 3 jojo

11.aval() exec() 能够识别字符串中python代码并进行

 res = 'print(123)'
 eval(res)
 exec(res)
res1 = 'for i in range(10):print(i)'
 eval(res1)        不能识别复杂代码
 exec(res1)        能识别复杂代码

12.hash() 返回一串随机的数字(哈希值)

print(hash('john')
#5666322728606613251

13.help() 查看帮助手册

14.isinstance() 判断某个数据是否属于某个数据类型

print(isinstance(123,int))	#True
print(isinstance(123,str))	#False

15.pow() #幂指数

print(pow(2,3)) #8

16.round() #四舍五入 可以自行搜索相关知识

print(round(2.675))
# 2.67
# 除非对精确度没什么要求,否则尽量避开用round()函数

按我们的想法返回结果应该是 2.68,可结果却是 2.67,为什么?
这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串 1 和 0 后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离 2.67 要更近一点点,所以保留两位小数时就近似到了 2.67。

可迭代对象

如何理解迭代

是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。 每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

迭代代码演示

# 不属于迭代的情况
n = 0
while n < 10:
    print(n)

# 属于迭代的情况
n = 0
while n < 10:
    print(n)
    n += 1

如何判断可迭代对象

内置有__iter__方法的都叫做可迭代对象
1.内置是什么意思 通过具句点符直接能点出来的东西都叫内置
2.next 针对双下划线开头双下划线结尾的读法 统一读作双下XXX(双下next)
可迭代对象有

    字符串 列表 字典 元组 集合 文件对象 是可迭代对象
    
    整型 浮点型 布尔值 函数名 不是可迭代对象

可迭代对象能够支持for循环去值 并且提供了一种不依赖索引取值的方式
iterable

迭代器对象

作用

迭代器对象给我们提供了一种不依赖于索引取值的方式
因为有迭代器对象的存在 我们才能对字典、集合这些无序类型循环取值

如何判断迭代器对象

内置有__iter__ 和__next__ 的对象都称为迭代器对象

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

可迭代对象调用__iter__就会变成迭代器对象
迭代器对象调用__iter__方法无论多少次还是迭代器对象本身

迭代器对象取值

l1 = [1, 2, 3, 4, 5]
# l1 并没有 __next__ 方法 因为它是可迭代对象
res = l1.__iter__()  # 使用__iter__将可迭代对象转化为迭代器对象 并赋值给res
print(res.__next__())  # 1  使用__next__就可以取出下一个数据

# 不使用for循环 依次打印列表中所有数据
l1 = [1, 2, 3, 4, 5]
res = l1.__iter__()
n = 0
while n < len(l1):
    print(res.__next__())
    n += 1
# 运行结果
# 1
# 2
# 3
# 4
# 5
l1 = [1, 2, 3, 4, 5]
print(l1.__iter__().__next__())  # 1  每次都是产生一个新的迭代器对象
print(l1.__iter__().__next__())  # 1
print(l1.__iter__().__next__())  # 1
print(l1.__iter__().__next__())  # 1
print(l1.__iter__().__next__())  # 1
res = l1.__iter__()
print(res.__iter__().__next__())  # 1 产生迭代器对象后 无论调用几次__iter__还是本身
print(res.__iter__().__next__())  # 2
print(res.__iter__().__next__())  # 3
print(res.__iter__().__next__())  # 4
print(res.__iter__().__next__())  # 5

可迭代对象的特点

当迭代对象无法看到内部数据执行打印操作时

print(range(10))
# range(0,10)

相当于一个工厂需要数据时才一个个取出,节省内存空间

for循环的本质

语法结构
for 变量名 in 可迭代对象:
for循环代码体
1.for循环 会自动将后面的可迭代对象调用__iter__转换为迭代器对象
2.之后每次循环调用__next__方法
3.最后没有值__next__会报错 for循环能过自动处理该错误 让循环自动结束 既之后要学到的异常捕获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值