美文网首页Python面试题
Python面试题-生成器

Python面试题-生成器

作者: 复苏的兵马俑 | 来源:发表于2020-02-15 14:17 被阅读0次

1、处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕。

def check_file(filename,aim):
    with open(filename, encoding='utf-8') as f:
        for i in f:
            if aim in i:
                yield i

g = check_file('1.复习.py','生成器')
for i in g:
    print(i.strip())
# 运行结果:
# 迭代器和生成器
# 生成器 —— 迭代器
# 生成器函数
# 含有yield关键字的函数都是生成器函数
# 生成器函数的特点
#调用之后函数内的代码不执行,返回生成器
#每从生成器中取一个值就会执行一段代码,遇见yield就停止。
#如何从生成器中取值:
# 生成器表达式
# (条件成立想放在生成器中的值 for i in 可迭代的 if 条件)

2、写生成器,从文件中读取内容,在每一次读取的内容之前加上“ *** ”之后再返回给用户。

def check_file(filename):
    with open(filename , encoding = 'utf-8') as f:
        for i in f:
            yield '***' + i

g = check_file('1.复习.py')
for i in g:
    print(i.strip())
# 运行结果:
***# 迭代器和生成器
***# 迭代器
***    # 可迭代协议 —— 含有iter方法的都是可迭代的
***    # 迭代器协议 —— 含有next和iter的都是迭代器
***    # 特点
***        # 节省内存空间
***        # 方便逐个取值,一个迭代器只能取一次。
***# 生成器 —— 迭代器
***    # 生成器函数
***        # 含有yield关键字的函数都是生成器函数
***        # 生成器函数的特点
***            #调用之后函数内的代码不执行,返回生成器
***            #每从生成器中取一个值就会执行一段代码,遇见yield就停止。
***            #如何从生成器中取值:
***                # for :如果没有break会一直取直到取完
***                # next :每次只取一个
***                # send :不能用在第一个,取下一个值的时候给上个位置传一个新的值
***                # 数据类型强制转换 :会一次性把所有数据都读到内存里
***    # 生成器表达式
***        # (条件成立想放在生成器中的值 for i in 可迭代的 if 条件)

相关文章

网友评论

    本文标题:Python面试题-生成器

    本文链接:https://www.haomeiwen.com/subject/memjfhtx.html