Python全栈(第一期)Day21

今日主要内容:
序列化模块的复习
‘包’的简单理解
模块的高级导入方法
异常处理
计算机的点拨

一,序列化模块

序列化模块

    # 数据类型转化成字符串的过程就是序列化
    # 为了方便存储和网络传输

    # json
        # dumps
        # loads
        # dump  和文件有关
        # load  load不能load多次

    # pickle
        #方法和json一样
        #dump和load的时候 文件是rb或者wb打开的
        #支持python所有的数据类型
        #序列化和反序列化需要相同的环境
        # shelve
        # open方法
        # open方法获取了一个文件句柄
        # 操作和字典类似

# 模块的导入
# import
# from import
# as重命名
# 都支持多名字导入
# sys.moudles记录了所有被导入的模块
# sys.path 记录了导入模块的时候寻找的所有路径

二,包的简单理解

1,创建文件夹方法

import os
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
l = []
l.append(open('glance/__init__.py', 'w'))
l.append(open('glance/api/__init__.py', 'w'))
l.append(open('glance/api/policy.py', 'w'))
l.append(open('glance/api/versions.py', 'w'))
l.append(open('glance/cmd/__init__.py', 'w'))
l.append(open('glance/cmd/manage.py',' w'))
l.append(open('glance/db/models.py',' w'))
map(lambda f: f.close(), l)

2,导入方法

1. __init__.py 文件的功能


2. 两种导入方法:
from . import * :从当前路径导入

from .. import * :从上一目录导入

3,相对路径和绝对路径

# 使用绝对路径 不管在包内部还是外部 导入了就能用
# 不能挪动,但是直观


# 相对路径
# 可以随意移动包 只要能找到包的位置,就可以使用包里的模块
# 包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能在包内直接执行了



'''
总结:
模块导入分为三种方法:
    1.绝对导入
    2.相对导入
    3.*和all配合(也算相对导入)
'''

三,异常处理

1,基本知识点

# 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
# 使用try和except就能处理异常
    # try是我们需要处理的代码
    # except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
    # except支持多分支
    # 有没有一个能处理所有错误的类型 : Exception
        # 有了万能的处理机制仍然需要把能预测到的问题单独处理
        # 单独处理的所有内容都应该写在万能异常之前
    # else : 没有异常的时候执行else中的代码
    # finally : 不管代码是否异常,都会执行
        # finally和return相遇的时候 依然会执行,先执行finally,最后才返回
        # 函数里做异常处理用,不管是否异常去做一些收尾工作

2,case1

try:
    print('1111')
    print('2222')
    #name
    ret = int(input('number >>>'))
    print(ret*'*')
except ValueError:
    print('输入的数据类型有误')
except Exception:
    print('你错了,老铁')
else:
    print('没有异常的时候执行else中的代码')
finally:
    print('''
        无论代码是否正确:
                        该部分一定会执行!''')

输出结果:
1111
2222
number >>>python
输入的数据类型有误
无论代码是否正确:
该部分一定会执行!

3,case2

print('000000000')
def func():
    try:
        f = open('file', 'w')

        return True
    except:
        return False
    finally:
        print('执行finally了')
        f.close()

print(func())

# 明确:这里是先执行finally 的内容,然后才打印返回值

输出结果:
0000000000000
执行finally了
True

4,case3

try:
    print('1111')
    name
    ret = int(input('number >>>'))
    print(ret*'*')
except Exception as error:
    print('''你错了!老铁!
你错误的原因是:{}'''.format(error))

输出结果:
1111
你错了!老铁!
你错误的原因是:name ‘name’ is not defined

猜你喜欢

转载自blog.csdn.net/qq_42615032/article/details/85055135