day13学习笔记(迭代器生成器和模块)

迭代器生成器和模块

迭代器

1.迭代器定义(iter) - 容器型数据,只能通过类型转换和生成器来获取迭代器对象

存储数据特点:可以同时保存多个数据,无法直接查看,需先将数据取出,取出后不能放回
所有容器都可以转换为迭代器

2.获取元素

1)遍历

iter5 =iter('hello!')
for x in iter5:
    print(f'x:{x}')

print(list(iter5))

2)获取单个元素

next(迭代器对象) - 获取迭代器最前面的一个元素

迭代器对象.next() - 获取迭代器最前面的一个元素

生成器

1.生成器定义

a.生成器就是迭代器
b.调用带有 yield 关键字函数得到一个生成器

2.生成器中产生数据

生成器产生数据数量与函数体遇到 yield 次数相同, yield 后面表达式的值就是生成器产生的数据

3.生成器产生数据原理

获取生成器元素时,调用关联函数,执行函数体遇到 yield 停止,并且 yield 后值为获取到的数据,再次获取元素时,从上一次停止处开始执行,直到遇到 yield ,若没有遇到 yield 就不会产生数据(next获取时会报错)

def create_ma():
    from random import choices
    str1 = '0123456789asdfghjkl'
    while True:
        str2 = choices(str1, k=4)
        yield ''.join(str2)

gen1 = create_ma()
print(next(gen1))
print(next(gen1))

生成式

生成式就是生成器的简写
列表推导式的[]变成()就变成生成式

模块

1.模块定义 - 一个模块就是一个py文件,文件名就是模块名

2.在一个模块中使用另外一个模块内容

1)哪些能用:所有模块中全局变量
2)导入模块

import 模块名 - 可以使用所有全局变量,以’模块名.变量’来使用变量
from 模块名 import 变量1,变量2,变量3,… - 可以使用指定变量,直接使用变量
from 模块名 import * - 可以使用所有全局变量,直接使用变量(不推荐使用)

import 模块名 as 新模块名 - 导入模块时给模块取别名,使用模块时使用新名字
from 模块名 import 变量1 as 新变量1,变量2,… - 模块中变量取新名字

导入模块原理

1.导入模块原理

当使用 import 或者 from-import 导入模块时,,系统将模块中所有代码执行,
重复导入同一个模块,模块只会执行一次

2.选择性执行被导入内容

不希望被其他模块执行的代码放到 if 语句中(if name == ‘main’😃
原理:
每个模块都有一个属性:name,用来保存当前模块名字,默认值是模块名,当模块执行时,模块__name__属性自动变成’main

包的使用

1.包的定义 - 里面都是py文件的文件夹,自带一个 init.py 的文件

2.数据导入

1)直接导入
a.from 包 import 模块
b.from 包.模块 import 变量
2)导入的定制 - 编辑 init.py 文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值