3.22迭代器

文章介绍了Python中的迭代器和生成器的概念,包括它们的特点和使用方法,如next()函数获取元素。接着讨论了模块的导入方式,以及包的使用,强调了__init__.py的重要性。最后,文章详细阐述了异常处理的语法结构,包括如何捕获并处理不同类型的异常。
摘要由CSDN通过智能技术生成

迭代器

1.什么是迭代器(iter)

1)迭代器是容器类型(可以遍历,也转换成列表),无法直接提供一个迭代器,只能将其他序列转换成迭代器
2)特点:
a.打印迭代器的时候无法查看到元素有哪些
b.无法通过len获取迭代器中元素的个数
c.如果要使用迭代器中的元素必须将元素从迭代器中取出来(取走),取走的元素会从迭代器中永远消失
3).任何数据都可以作为迭代器的元素
# 1) 创建迭代器
i1 = iter('abc')
i2 = iter([10,20, 30, 40])

#2)迭代器无法查看元素
print(i1)
print(i2)

# 3) 迭代器无法统计个数
# print(len(i1))    # 报错

2.获取迭代器中的元素

无论以任何方式获取到迭代器中的某个元素,那么这个元素一定会从迭代器中
1) 获取单个元素:next(迭代器) -   获取迭代器最前面的元素
print(next(i1)) # a
print(next(i1)) # b
print(next(i1)) # c
# print(next(i1)) # 报错

print(next(i2)) # 10
print(list(i2)) # [20, 30, 40]
print(list(i2)) # []  列表中的元素已取完

模块和异常捕获

1.生成器

定义及特点

1)容器(是一种可以创建多个数据的容器),生成器中保存的是创建数据的方法,而不是数据本身
2. 特点:
a.打印生成器无法查看元素
b.不能通过len统计元素的个数;
c.如果需要生成器的数据,必须将数据取出,而且取一个就少一个

  1. 生成器获取元素的方法,和迭代器一模一样

如何创建生成器

调用带有yield关键字的函数,就可以得到一个生成器。

def func1():
    print('hello')
    return 100

result = func1()
print(f'result:{result}')

怎么控制生成器中元素的个数和元素的值

执行创建生成器的函数的函数体的时候,回遇到几次yield,对应的生成器就可以创建几个数据,每次遇到yield,yield后面的值就是能创建出的生成器

def func2():
    yield

2. 模块

定义:python中一个 py文件就是一个模块

怎么在一个模块中使用另一个模块中的内容

1)前提:如果想要在一个模块中使用另一个模块中的内容,被使用的内容所在的模块的模块名必须符合变量名的要求
2)导入模块
a. import 模块名 - 导入指定模块,导入后可以通过’模块名.xxx’的方式使用这个模块的内容
b. from 模块名 import 内容1,内容2,… - 导入指定模块,导入后可以直接使用指定内容
c. from 模块名 import * - 导入指定模块,导入后可以直接使用模块中所有的内容
d. import 模块名 as 新模块 - 导入指定模块后对模块进行重命名
e. from 模块名 import 内容1 as 新内容1 - 对导入的内容进行重命名

# ------------a.导入方式1--------------
import test
print(test.a)
print(test.name)


# ------------b.导入方式2--------------
from test import a, name

print(a)
print(name)
# # print(f_test1)  # 报错 test中无

# ------------c.导入方式3--------------
from test import *
print(a)
print(stu)

# ------------d.导入方式4--------------
import test as test1

# ------------e.导入方式5--------------
from test import a as a1
print(a1)

3.包

  • 定义: 包含__init__.py文件的文件夹就是包

  • 怎么使用包或者文件夹中的模块中的内容

  1. import 包名 - (只适用于包)导入指定的包,导入后可以通过’包名.xxx’去使用包中__init__.py文件中的所有内容

  2. from 包名 import 模块名1,模块名2,… - 导入指定包中指定的模块,导入后可以通过’模块名.xxx’使用指定模块中的内容

  3. from 包名 import 内容1,内容2,… (只适用于包)导入指定包中__init__.py文件中的指定内容

  4. import 包名.模块名

  5. from 包名.模块名 import 内容1,内容2,…

    # --------------导入方式1--------------
    import files2
    print(files2.a)
    
    # --------------导入方式2--------------
    from files2 import test2
    print(test2.msg)
    
    # --------------导入方式3--------------
    from files2 import a
    print(a)
    
    # --------------导入方式4--------------
    import files2.test4
    #
    print(files2.test4.b)
    
    # --------------导入方式5--------------
    from files2.test4 import b
    print(b)
    

异常

1.定义:异常 - 程序中错误

程序出现异常(报错)会直接让程序结束运行(在哪个位置出现的异常,程序就会在哪个地方结束)

2.异常捕获 - 让程序在出现异常的时候程序不结束,还可以往后执行

语法结构1:
try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(出现异常后悔执行的代码)
    
执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常,程序不报错并且马上执行代码段2


try:
    age = int(input('请输入年龄:'))
    print(age)
except:
    print('年龄输入有误')
2) 语法结构2    -   捕获指定类型的异常

try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行的代码)
    
3)语法结构  -   同时捕获多种异常
try:
    代码段1(需要捕获异常的代码)
except (异常类型1,异常类型2....)
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行的代码)

4)语法结构  -   同时捕获多种异常
try:
    代码段1(需要捕获异常的代码)
except 异常类型1:
    代码段11
except 异常类型2:
    代码段22
except 异常类型3:
    代码段33
finally:
    代码段3(最后无论如何都会执行的代码)
try:
    print('abc'[4])
except IndexError:
    print('出错')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值