内置函数与迭代器对象
作者:互联网
内置函数
-
sbs
求该数据值的绝对值
print(abs(-10)) # run:10
-
all
判断容器类型中的所有数据值的布尔值是否为True
print(all([0, 1, 2, 3])) # run:False
print(all([1, 2, 3])) # run:True
-
any
判断容器类型中的所有数据值的布尔值有没有True
print(any([0, 1, 2, 3])) # run:True
print(any([1, 2, 3])) # run:True
- 将十进制转换为其他进制
print(bin(10)) # run:0b1010
print(oct(10)) # run:0o12
print(hex(10)) # run:0xa
- 将其他进制转换为十进制
print(int(0b1010)) # run:10
print(int(0o12)) # run:10
print(int(0xa)) # run:10
-
bytes
格式编码转换
res = '斯派修姆光线'.encode('utf8')
print(res) # run:b'\xe6\x96\xaf\xe6\xb4\xbe\xe4\xbf\xae\xe5\xa7\x86\xe5\x85\x89\xe7\xba\xbf'
res1 = str(res, 'utf8')
print(res1) # run:斯派修姆光线
res = bytes('斯派修姆光线', 'utf8')
print(res) # run:b'\xe6\x96\xaf\xe6\xb4\xbe\xe4\xbf\xae\xe5\xa7\x86\xe5\x85\x89\xe7\xba\xbf'
res1 = str(res, 'utf8')
print(res1) # run:斯派修姆光线
-
callable(call在IT专业名词中翻译成 调用,加括号执行)
判断某个名字是否可以调用
name = 'barry'
def index():
print('from index')
print(callable(name)) # run:False
print(callable(index)) # run:True
- 根据ASCII码表将字符与数字转换
print(chr(65)) # run:A
print(ord('a')) # run:97 小写字母 97~122
print(ord('A')) # run:65 大写字母 65~90
-
dic
获取对象可以通过句点符获取的数据
print(dir(str)) #
-
divmod
获取除法结果的整数和余数
# 每页展示十个,要多少页
num, more = divmod(99, 10)
if more:
num += 1
print('总页数:%s' % num) # run:总页数:10
-
enumerate
循环打印数据值和对应的索引值
name = ['barry', 'jack', 'tom']
for i, j in enumerate(name, 100): # 默认从0开始
print(i, j)
# run:100 barry
# 101 jack
# 102 tom
- eval:可以识别并执行字符串中简单的python代码
- exec:可以识别并执行字符串中复杂的python代码
res = 'print(123)'
eval(res) # run:123
exec(res) # run:123
info = 'for i in range(10):print(i)'
eval(info) # 报错
exec(info) # run:0 1 2 3 4 5 6 7 8 9
-
hash
返回哈希值,哈希值与每一个字节都有关,当文件发生改变是,哈希值也会改
print(hash('barry')) # run:7623971343379075356
print(hash('123')) # run:3561279617400487131
- 查看帮助信息
help()
- 判断数据是否属于某个数据类型
print(isinstance(11, int)) # run:True
print(isinstance(11, str)) # run:False
-
pow
幂指数
print(pow(3, 3)) # run:27
-
round
返回浮点型的四舍五入值
print(round(5.5)) # run:6
可迭代对象
-
什么是迭代
迭代就是根据上一次的结果更新得出的新结果
i = 1
while i < 5:
print(i)
i += 1
# run:1
# 2
# 3
# 4
- 判断可迭代对象
"""
内置函数有_iter_的都叫可迭代对象
可迭代对象支持for循环取值
"""
可迭代对象:
str.___iter___()(字符串)
list.___iter___()(列表)
dict.___iter___()(字典)
tuple.___iter___()(元组)
set.___iter___()(集合)
open().___iter___()(文件对象)
不可迭代对象:
int(整型)
float(浮点型)
bool(布尔值)
def index():(函数名)
迭代器对象
- 迭代器对象可以将字典,集合这些无序类型循环将值取出
1.内置__iter__和__next__的对象都是迭代器对象
2.可迭代对象调用__iter__方法后就会变为迭代器对象
3.可迭代对象调用__iter__方法后无论在调用多少次都是迭代器对象
res = 'barry'.__iter__() # res此时就是迭代器对象
print(res.__next__()) # run:b
print(res.__next__()) # run:a
print(res.__next__()) # run:r
print(res.__next__()) # run:r
print(res.__next__()) # run:y
print(res.__next__()) # 没有值时会报错
- 迭代器字典取值,只取k值
d1 = {'name': 'barry', 'pwd': 123}
res = d1.__iter__()
print(res.__next__()) # run:name
print(res.__next__()) # run:pwd
- 用循环一次把所有值取出来
l1 = [1, 2, 3, 4, 5]
res = l1.__iter__()
count = 0
while count < len(l1):
print(res.__next__())
count += 1
# run:1
# 2
# 3
# 4
# 5
- 必须使用的是同一个迭代器对象才能循环取值
a = [1, 2, 3]
print(a.__iter__().__next__()) # run:1 每运行一次就产生一个新的迭代器对象
print(a.__iter__().__next__()) # run:1
print(a.__iter__().__next__()) # run:1
res = a.__iter__()
print(res.__iter__().__next__()) # run:1 每运行一次使用都是一个迭代器对象
print(res.__iter__().__next__()) # run:2
print(res.__iter__().__next__()) # run:3
- 可以简写
a = [1, 2, 3]
res = iter(a)
print(next(res)) # run:1
print(next(res)) # run:2
print(next(res)) # run:3
for循环的本质
语法结构
for 变量名 in 可迭代对象:
for循环体代码
for循环会将in后面的可迭代对象变为迭代器对象(__iter__),每次循环时调用取值(__next__),最后没有值时会报错,for循环会自动处理该错误让循环正常结束
标签:__,内置,run,函数,迭代,res,.__,print 来源: https://www.cnblogs.com/riuqi/p/16467611.html