day13-模块和异常捕获

文章介绍了Python中的生成器,包括其创建和特点,如使用yield关键字的函数生成生成器,以及如何控制生成器中的元素个数和值。接着讨论了模块的概念和导入方式,如import和from...import的不同用法。此外,还详细阐述了包的定义和如何使用包内的模块。最后,文章讲解了异常处理,包括异常的基本概念和如何通过try-except-finally结构捕获并处理异常。
摘要由CSDN通过智能技术生成

1. 生成器

1.1 什么是生成器
  1. 容器(是一种可以创建多个数据的容器),生成器中保存得到是创建数据的方法,而不是数据本身

  2. 特点:

    ​ a. 打印生成器无法查看元素

    ​ b. 不能通过len统计元素的个数

    ​ c. 如果需要生成器中的数据,必须将数据取出,而且取一个少一个

    生成器和迭代器获取元素的方法一样

1.2 怎么创建生成器

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

def fun1():
    yield
    print('hello')
    return 100


result = fun1()
print(f'result:{result}')
1.3 怎么控制生成器中元素个数和元素的值

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

def fun2():
    print('+++++')
    yield 100
    print('-----')
    yield 200
    print('=====')
    yield 300


gen2 = fun2()
print(gen2)
print(next(gen2))
print(next(gen2))
print(next(gen2))
# print(next(gen2))     # 报错
print(list(gen2))


def fun3(n):
    yield 100
    if n % 2 == 0:
        yield 200
    yield 300


gen3 = fun3(3)
print(gen3)
print(next(gen3))
print(next(gen3))

2. 模块

2.1 什么是模块

python中一个py文件就是一个模块

2.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 test
print(test.a)
print(test.name)
test.fun_test()

# b. 导入方式2
from test import a, fun_test
print(a)
fun_test()
# print(name)       # 报错

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

# d. 导入方式4
import test as tt
print(tt.a)
tt.fun_test()
print(tt.name)

# e. 导入方式5
from test import name as t_name, a as t_a
print(t_name)
print(t_a)

3. 包

3.1 什么是包

包含__init__.py文件的文件夹就是包

3.2 怎么使用包或者文件夹的模块中的内容
  1. import 包名:(只适用于包)导入指定的包,导入后可以通过’包名.xxx’去使用包中__init__.py文件

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

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

  4. import 包名.模块名

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

# 导入方式1
import files

files.fun_test1()
print(files.pie)

# 导入方式2
from files2 import test2, test3
print(test2.num1)
print(test3.num)
from files import test1, fun_test1
print(test1.money)
fun_test1()

# 导入方式3
import files2.test2
print(files2.test2.num1)

import files2.test2 as t2
print(t2.num1)

# 导入方式4
from files.test1 import fun_test2
fun_test2()

from files2.aaa.tt import fun_test2
fun_test2()

4. 异常捕获

4.1 异常

异常:程序中的错误

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

print('+++++')
print('abc'[4])
print('-----')
print('=====')
4.2 异常捕获

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

  1. 语法结构1 - 捕获所有异常

    try:

    ​ 代码段1(需要捕获异常的代码)

    except:

    ​ 代码段2(出现异常后会执行的代码)

    finally:

    ​ 代码段3(无论如何都会执行的代码)

    执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常程序不报错并且马上执行代码段2

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

    try:

    ​ 代码段1(需要捕获异常的代码)

    except异常类型:

    ​ 代码段2(出现异常后会执行的代码)

    finally:

    ​ 代码段3(无论如何都会执行的代码)

  2. 语法结构3:同时捕获多种异常

    try:

    代码段1(需要捕获异常的代码)

    except (异常类型1, 异常类型2, …):

    ​ 代码段2(出现异常后会执行的代码)

    finally:

    ​ 代码段3(无论如何都会执行的代码)

  3. 语法结构4 - 同时捕获多种异常

    try:

    代码段1

    except 异常类型1:

    ​ 代码段11

    except (异常类型2, 异常类型22, …):

    ​ 代码段22

    except 异常类型3:

    ​ 代码段33

    finally:

    ​ 代码段3(无论如何都会执行的代码)

try:
    print('abc'[1:4])
except IndexError:
    print('出错')
finally:
    print('艺术')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值