Python基础语法学习笔记 - 模块和生成器

DAY13-模块和生成器

一、生成器

1.什么是生成器
1)容器(是一种可以创建多个数据的容器),生成器中保存得是创建数据的方法,而不是数据本身
2)特点:
  • 打印生成器无法查看元素;
  • 不能通过len统计元素的个数;
  • 如果需要生成器中的数据,必须将数据取出,而且取一个就少一个
3)生成器获取元素的方法和迭代器一模一样
2.怎么创建生成器
调用带有yield关键字的函数,就可以得到一个生成器
def func1():
    print('hello')
    return 100
result = func1()
print(f'result:{result}')  #hello   result:100

def func1():
    yield
    print('hello')
    return 100
result = func1()
print(f'result:{result}')  #result:<generator object func1 at 0x000002647115C4A0>
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 新模块名 - 导入指定模块后对应模块进行重命名:

e.from 模块名 import 内容1 as 新内容1 - 对导入的内容进行重命名

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

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

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


# --------------- d.导入方式4 ----------------
# import test as t1
#
# test = 1000
#
# print(t1.a)
# print(t1.name)
# t1.f_test1()
#
# print(test)


# --------------- e.导入方式5 ----------------
# from test import name as t_name, a
#
# name = '小花'
#
# print(name)
# print(t_name)
# print(a)

三、包

1.什么是包
包含__int__.py文件的文件夹就是包
2.怎么使用包或者文件夹中的模块中的内容

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

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

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

4)import 包名.模块名

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

# -------------------导入方式1-----------------
# import files2
#
# files2.f_test2()
# print(files2.pi)

# -------------------导入方式2-----------------
# 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)

# from files2.abc import test3
# print(test3.demo)

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

# import files2.test2 as t2
# print(t2.msg)

# import files2.abc.test3 as t3
# print(t3.demo)

# -------------------导入方式4-----------------
# from files2.test2 import msg
# print(msg)

# from files2.abc.test3 import demo
# print(demo)

四、异常

1.异常 - 程序中错误
程序出现异常(报错)会直接让程序结束运行,(在哪个位置出现的异常,程序就会在哪个地方结束)
# print('++++++++')
# print('abc'[4])
# print('--------')
# print('========')
2.异常捕获 - 让程序在出现异常的时候程序不结束,还可以接着往后执行
1)语法结构1  - 捕获所有异常
try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行的代码)
    
执行过程:先执行代码段1,执行代码段1的时候如果没有出现异常,就不执行代码段2;如果出现异常,程序不报错并且马上执行代码段2
2)语法结构2(推荐使用!)  -  捕获指定类型的异常
try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(出现异常后会执行的代码)
finally:
    代码段3(最后无论如何都会执行的代码)
"""
3)语法结构3 - 同时捕获多种
try:
    代码段1(需要捕获异常的代码)
except (异常类型1, 异常类型2, ...):
    代码段2(出现异常后会执行的代码)
finally:
    代码段3
4)语法结构4 - 同时捕获多种
try:
    代码段1
except 异常类型1:
    代码段11
except (异常类型2, 异常类型22, ...):
    代码段22
except 异常类型3:
    代码段33
...
finally:
    代码段3
try:
    print('abc'[4])
except KeyError:
    print('出错!')
finally:
    print('遗书')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值