day13模块和异常捕获总结

模块和异常捕获

01 生成器(了解)

1.什么是生成器

1)容器(是一个可以创建多个数据的容器),生成器中保存的是创建数据的方法,而不是数据本身。
2)特点

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

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

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

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

2.怎么创建生成器


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

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

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

====================================================================

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

====================================================================

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

gen2=fun2()
print(next(gen2))
#+++++
#100   #生成器下下蛋的时候会把程序执行到yield前的打印值打印出来,不过只有yield后面的值可以当做数据使用
print(next(gen2))
# =====
# 200
print(next(gen2))
# -----
# 300
# print(next(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))   #报错

02 模块

1.什么是模块


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

2.怎么在一个模快中使用另外一个模快的内容

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 text

print(text.a)
print(text.name)
text.f_text1()

# ==========b.导入方式2===============

from text import a
print(a)
# print(name)  #baocuo

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

# ==========d.导入方式4===============
import text as t1
text=100
print(t1.a)
print(t1.name)
t1.f_text1()

# ==========e.导入方式5===============
from text import name as na
print(na)

03 包

1.什么是包


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

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


1)import 包名 - (只适用于包),导入指定的包,导入后可以通过‘包名 .xxx’去使用包中__init__.py文件中的内容
2)from 包名 import 模块1,模块2,···· - 导入指定包中指定的模块,导入后可以通过’模块.xxx’使用指定模块名
3)from 包名 import 内容1,内容2,···(只适用于导入指定包中__int__.py文件中指定内容4)import 包名.模块名5)from 包名.模块名 import 内容1,内容二
#=======导入方式1========
import files2
files2.f_text2(2)
print(files2.pi)

print('=======导入方式2==========')
from files2 import text2,text4
print(text4.abc)

#=======导入方式3==========
import files2.text2
print(files2.text2.pi)

import files2.text2 as t2
print(t2.pi)

#=======导入方式4==========

from files2.text2 import pi
print(pi)

#=======导入方式5==========
from files2.text4 import abc
print(abc)

04 异常捕获

1.异常捕获


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

# print('+++++')
# print('-----')
# # print('abc'[4])
# print('======')

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

语法结构1:
try:
    代码段1(需要捕获异常代码)
except: 
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行的代码)
    
执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常,程序不报错并且马上执行代码段2'''
 try:
     age=int(print(input('请输入年龄:')))
     print(age)
 except:
     print('年龄输入有误!')
语法结构2(推荐使用) - 捕获指定类型的异常
try:
    代码段1(需要捕获异常代码)
except 异常类型:
    代码段2(出现异常后会执行的代码)
语法结构3 - 同时捕获多种
try:
    代码段1(需要捕获异常代码)
except (异常类型1,异常捕获2,···):
    代码段2(出现异常后会执行的代码)
语法结构4 - 同时捕获多种
try:
    代码段1
except 异常类型1:
    代码段11
except 异常类型2:
     代码段22
except 异常类型3:
     代码段33   
try:
    print('abc'[4])
except IndexError:
    print('出错!')
finally:
    print('遗书')

@@导入原理 - 导入模块时系统会自动进入到指定模块,将模块中的代码全部执行一遍

#在这个if 语句的代码只会在直接执行当前模块的时候执行,在别的模块导入的时候不会执行
if__name__=='__main__'
   pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值