其他分享
首页 > 其他分享> > 内置函数与迭代器对象

内置函数与迭代器对象

作者:互联网

内置函数

print(abs(-10))  # run:10
print(all([0, 1, 2, 3]))  # run:False
print(all([1, 2, 3]))  # run: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
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:斯派修姆光线
name = 'barry'


def index():
    print('from index')


print(callable(name))  # run:False
print(callable(index))  # run:True
print(chr(65))  # run:A
print(ord('a'))  # run:97  小写字母 97~122
print(ord('A'))  # run:65  大写字母 65~90
print(dir(str))  #
# 每页展示十个,要多少页
num, more = divmod(99, 10)
if more:
    num += 1
print('总页数:%s' % num)  # run:总页数:10
name = ['barry', 'jack', 'tom']
for i, j in enumerate(name, 100):  # 默认从0开始
    print(i, j)
# run:100 barry
#    101 jack
#    102 tom
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
print(hash('barry'))  # run:7623971343379075356
print(hash('123'))  # run:3561279617400487131
help()
print(isinstance(11, int))  # run:True
print(isinstance(11, str))  # run:False
print(pow(3, 3))  # run:27
print(round(5.5))  # run:6

image

可迭代对象

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():(函数名)

img

迭代器对象

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__())  # 没有值时会报错
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

img

for循环的本质

语法结构
for 变量名 in 可迭代对象:
    for循环体代码

    
for循环会将in后面的可迭代对象变为迭代器对象(__iter__),每次循环时调用取值(__next__),最后没有值时会报错,for循环会自动处理该错误让循环正常结束

标签:__,内置,run,函数,迭代,res,.__,print
来源: https://www.cnblogs.com/riuqi/p/16467611.html