day13-Python-模块和异常

文章介绍了Python中的生成器,包括其定义、创建方法以及如何控制生成器的元素。接着讲述了模块的导入方式,如import和from...import的不同用法,并提到了包的概念。最后,文章讨论了异常处理,包括如何捕获和处理不同类型的异常。
摘要由CSDN通过智能技术生成

Python-模块和异常

一.生成器

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

3)生成器和迭代器获取元素的方法一致
"""
2.怎么创建生成器
"""
调用带有yield关键字的函数,就可以得到一个生成器。

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


result = func1()
print(f'result:{result}')
3.怎么控制生成器中元素的个数和元素的值
"""
执行常见生成器的函数的函数体的时候,会遇到几次yield,对应的生成器就可以创建几个数据,每次遇到yield,yield后面的值就是能创造出来的数据

"""
def func2():
    print('+++++')
    yield 100
    print('------')
    yield 200
    print('=======')
    yield 300
gen2 = func2()
print(gen2)
print('next:', next(gen2))
print('next:', next(gen2))
print('next:', next(gen2))
# print('next:', next(gen2))        # 报错!

print(list(gen2))       # []
def func3(n):
    yield 100
    if n % 2 == 0:
        yield 200
    yield 300


gen3 = func3(3)
print(gen3)
print(list(gen3))       # [100, 300]
# print(next(gen3))     # 报错!


num = 1000

二.模块

1.什么是模块
"""
python中一个py文件就是一个模块
"""
2.怎么在一个模块中使用另一个模块中的内容
"""
1)前提:如果想在一个模块中使用另外一个模块中的内容,被使用的模块的模块名必须符合变量名的要求

2)导入模块
a.import 模块名   -   导入指定模块,导入后可以通过'模块名.xxx'的方式使用该模块中的内容
b.from 模块名 import 内容1, 内容2,..  -  导入指定模块,导入后可以直接使用指定内容
c.from 模块名 import *   -   导入指定模块,导入后可以使用模块中的所有内容
d.import 模块名 as 新模块名  -  导入指定模块后对模块进行重命名:'新模块名.xxx'
e.from 模块名 import 内容1 as 新内容1  -  对导入的内容进行重命名
"""
# -----------------------a.导入方式1------------------------
import  text

print(text.a)
print(text.name)
text.func_1()
# -----------------------b.导入方式2------------------------
from text import a, func_1
print(a)
func_1()
# print(name)  # 报错

# -----------------------c.导入方式3------------------------
from text import *
print(a)
print(name)
func_1()
# -----------------------d.导入方式4------------------------
import text as t1

test = 100
print(t1.a)
print(t1.name)
t1.func_1()
# -----------------------e.导入方式5------------------------
from text import a, name as t_name

name = '春花'
print(t_name)
print(name)
print(a)

三.包

1.什么是包
"""
包含__init__.py文件的文件夹就是包
"""
2.怎么使用包或者文件夹中的模块中的内容
"""
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,...
注意:import至少到模块 from至多到模块

"""
# -----------------------导入方式1------------------------
import files2
files2.f_test2()
print(files2.pi)
# -----------------------导入方式2、3------------------------
from files2 import test2, test4, pi, f_test2

print(test2.msg)
print(test4.abc)
print(pi)
f_test2()
from files import test1
print(test1.money)
# -----------------------导入方式4------------------------
import files2.test2
print(files2.test2.msg)

import files2.test2 as t2
print(t2.msg)
# -----------------------导入方式5------------------------
from files2.test2 import msg, message
print(msg)
print(message)

四.异常

1.异常 - 程序中错误
"""
程序出现异常(报错)会直接让程序结束运行(在哪个位置出现异常,就在哪个地方结束)

"""
# print('++++++++')
# print('abc'[4])  # 报错
# print('--------')
# print('========')
2.异常捕获 - 让程序出现异常的时候程序不结束,还可以接着往后执行
"""
1)语法结构1:
try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行)
      
执行过程:先执行代码段1,执行代码段1时如果没有出现异常,就不执行代码段2:如果出现异常,程序不报错并且马上执行代码段2

"""
try:
    age = int(input('请输入年龄:'))
    print(age)
except:
    print('年龄输入有误!')
"""
2)语法结构2(推荐使用)  -  捕获指定类型的异常
try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行)   
"""
try:
    print('abc'[4])
except IndexError:
    print('出错!')

报错
try:
    print('abc'[4])
except KeyError:
    print('出错!')
"""
3)语法结构3  -  同时捕获多种异常
try:
    代码段1(需要捕获异常的代码)
except (异常类型1, 异常类型2,...):
    代码段2(出现异常后会执行的代码)
finally:
    代码段3 

4)语法结构4  -  同时捕获多种异常
try:
    代码段1(需要捕获异常的代码)
except 异常类型1:
    代码段11
except 异常类型2:
    代码段22
except 异常类型3:
    代码段33
finally:
    代码段3  

"""
try:
    print('abc'[4])
except IndexError:
    print('出错!')
finally:
    print('遗书')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小花-Soleil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值