内置函数与迭代器对象

内置函数

  • 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

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__())  # 没有值时会报错
  • 迭代器字典取值,只取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

img

for循环的本质

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


for循环会将in后面的可迭代对象变为迭代器对象(__iter__),每次循环时调用取值(__next__),最后没有值时会报错,for循环会自动处理该错误让循环正常结束
posted @ 2022-07-11 19:36  无言以对啊  阅读(32)  评论(0)    收藏  举报