欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python面试要点总结:基础篇二

程序员文章站 2022-05-06 16:51:06
...

1、常用名称

1.1可迭代对象

range()、list()等内部有 __ iter __()魔法方法
for循环遍历数据之前,可迭代的对象会自动调用 __ iter __()魔法方法,会将可迭代对象变为迭代器,然后迭代器调用自身的 __next __ ()方法取值
迭代器:迭代取值的工具,通过不依赖索引的的迭代取值方式(它本身也有 __ iter __()方法,执行它是不是变为迭代器,而是返回迭代器本身)
可迭代对象不一定是迭代器
python面试要点总结:基础篇二

li = [1, 2, 3, 4]  # iterable可迭代的对象
li_iter = li.__iter__()  # 将可迭代对象转为迭代器
try:
    while True:
        print(li_iter.__next__())
except Exception as f:  # 异常捕获
    print(f)

1.1.1判断是否可迭代

①看该对象中是否含有 __ iter __()方法
②使用isinstance判断一个对象是否可迭代与type类似

from collections import Iterable

print(isinstance('123', Iterable))  # 结果为True
print(isinstance([1, 2, 3], Iterable))  # 结果为True
print(isinstance(123, Iterable))  # 结果为False
print(isinstance('asb', (str, int)))  # 判断一个对象是不是整数或者字符串类型

1.1.2可迭代对象怎么变为迭代器

li_iter = li.__iter__() # 将可迭代对象转为迭代器
li_iter = iter(li)
迭代器不能通过索引取值只能通过next(li_iter)或者li_iter.__next __()取值,只能一个一个顺延取值,超出就报错

1.2生成器

在python中一边循环一边计算的机制,叫做生成器(generator)
作用:如果有海量数据存入内存会造成资源浪费,生成器会在循环的过程中根据算法推断出后续需要的元素,不用存储完整数据,只使用需要的数据从而减小内存消耗,简而言之又想使用大量数据,又想占用少量内存空间

1.2.1创建生成器

①生成器表达式(元组推导式)
python面试要点总结:基础篇二

②生成器函数
通过yield关键字创造生成器,工作原理也是调用next()或者 __next __()直到捕获异常

def demo(num):
    n = 0
    while n < num:
        yield n  # yield返回一个值,并且记住这个返回值的位置,下次调用的时候
        # 就会从next的下一条语句执行,与return的区别就是,一个直接结束,一个直到捕获异常
        n += 1
res = demo(10)
print(res)  # <generator object demo at 0x0000022F4A807148>
print(next(res))  # 0

2、待续…