Python全栈学习Day15 内置函数

本文深入探讨Python中的迭代器与生成器概念,包括可迭代协议、迭代器协议的特点,生成器函数及其工作原理,以及如何使用生成器表达式。通过实例演示生成器在文件处理中的应用,如查找特定内容和添加前缀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复习:迭代器与生成器

迭代器

可迭代协议 含有iter方法都是可迭代的
迭代器协议 含有next和iter的都是迭代器
特点:
节省内存空间
方便逐个取值,一个迭代器只能取值一次

生成器

生成器函数:
含有yield关键字都是生成器函数
生成器函数特点:
调用之后函数内的代码不执行,返回生成器
每次从生成器中取一个值就会执行一段代码,遇到yield就停止
如何从生成器中取值:
for循环:如果没有break会一直取
next:每次只取一个
send:不能用在第一个,取下一个值的时候给上一个位置传一个新的值
数据类型强制转换:会一次性把所有数据都读到内存里
生成器表达式

条件成立想放在生成器中的值 for i in 可迭代的 if 条件

作业讲解

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('你好', 's')
for i in g:
    print(i.strip())

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

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


g = check_file('你好')
for i in g:
    print(i.strip())

今日内容

例子:打印进度条

import time
for i in range(0,101):
    time.sleep(0.1)
    char_num = i//2
    per_str = '\r%s%% %s' % (i, '*'*char_num)
    print(per_str, end='', flush=True)

内置函数

由于比较多,放在了processon里
https://www.processon.com/view/link/597fcacfe4b08ea3e2454ece
密码:G76Z

面试题

def extendlist(val, list=[]):
    list.append(val)
    return list


list1 = extendlist(10)
list2 = extendlist(123, [])
list3 = extendlist('a')
print(list1)
print(list2)
print(list3)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值