生成器和常见内置函数
生成器
生成器对象
生成器其实就是一个自定义的迭代器。
当函数内部含有yield关键字,那么在第一次调用函数的时候并不会执行函数代码,而是将函数转变为生成器。
自定义range功能
通过生成器可以模仿range方法写一个类似的函数。
yield传值
yield提供了参数和闭包之外的第三种传值方式。
将yield返回的值付给变量名,在给他传值之前,不会往下运行。
生成器表达式
生成器表达式的格式类似列表表达式,就是将中括号变为小括号。
生成器表达式的应用
常见内置函数
1.abs() 绝对值
作用就是去绝对值。
print(abs(123)) #结果:123 print(abs(-123)) #结果:123
2.all()和any()判断多个结果
all()的作用是判断多个值,只有所有元素都为True结果才为True。
any()的作用是判断多个值,只要有一个元素为True结果就为True。
l = [1, 2, 3, 4, 0] print(all(l)) # 结果为False print(any(l)) # 结果为True
3.bin()、oct()和hex() 进制转换
bin()的作用是转化成二进制。
oct()的作用是转化成八进制。
hex()的作用是转化成十六进制。
print(bin(111)) # 结果为0b1101111 print(oct(111)) # 结果为0o157 print(hex(111)) # 结果为0x6f
4.bytes()和str()编码解码
bytes()的作用是编码。
str()不仅可以用于字符串类型转换,还可用于解码。
res = '好' res1 = bytes(res, 'utf8') print(res1) # 结果为b'\xe5\xa5\xbd' res2 = str(res1, 'utf8') print(res2) # 结果为'好'
5.callable()判断是否可调用
callable()的作用是判断某个名字是否可调用。
s1 = 123 def index(): print('123') print(callable(s1)) # 结果为False print(callable(index)) # 结果为True
6.chr()和ord()ASCII码转换
chr()的作用是根据数字找ASCII码对应的字符。
chr()的作用是根据数字找ASCII码对应的字符。
print(chr(97)) # 结果为'a' print(ord('a')) # 结果为97
7.complex() 复数
complex()的作用是转化一个字符串或数为复数。
print(complex(123)) # 结果为(123+0j)
8.dir()查看可调用
dir()的作用是查看当前对象可查看的函数。
def index(): pass print(dir(index)) # 结果为['__annotations__', '__call__', ...]
9.divmod()取余
divmod()的作用是获取商和余数。
print(divmod(97, 8)) # 结果为(12, 1)
10.eval()和exec() 识别语法
eval()可以将字符串中的数据内容加载并执行,只能识别简单的语法。
exec()可以将字符串中的数据内容加载并执行,可以识别较复杂的语法。
res1 = """ for i in range(5): print(i) """ res2 = """ print('hello world') """ eval(res2) # 结果为'hello world' exec(res1) # 结果为0,1,2,3,4
11.isinstance()判断数据类型
isinstance()的作用是判断数据是否是某个类型。
print(isinstance(123, int)) # 结果为True
12.pow()指数
pow()的作用是计算一个数的指数。
print(pow(2, 3)) # 结果为8
13.round()取整
round()的作用是将一个小数转化为整数。
print(round(4.8)) # 结果为5
14.sum()求和
sum()的作用是将一组数据求和。
l1 = [11, 22, 33, 44, 55, 66] print(sum(l1)) # 结果为231
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通