Python学习(五)异常处理与模块

异常概念

异常的捕获方法

try:
    f= open("D:/abc.txt","r",encoding="UTF-8")
except:
    print("出现异常了,因为文件不存在,我将open的模式,改为w模式去打开")
    f =open("D:/abc.txt","w",encoding="UTF-8")

解释:以只读模式打开不存在的文件程序会报错,所以在异常处理中用写模式打开该文件,因为写模式,文件不存在会创建文件。

以下代码,列举了常见异常类型,比如变量未定义异常,除零异常等,也可以利用()捕捉多个可能出现的异常,未正确设置捕获异常类型,将无法捕获异常。

try:
    print(num)
except NameError as e:
    print("出现了变量未定义的异常")
    print(e)

try:
    1/0
except ZeroDivisionError as e:
    print("出现了除0异常")
    print(e)

try:
    1/0
    print(num)
except (ZeroDivisionError,NameError) as e:
    print("出现了除0异常或变量未定义异常")
    print(e)

# 捕获所有异常
try:
    f = open("D:/123.txt","r")
except Exception as e:
    print("出现异常了")

else用于没出现异常时要执行的代码

try:
    print("Hello")
except Exception as e:
    print("出现异常了")
else:
    print("好高兴,没有异常。")

finally用于有没有异常都要执行的代码

try:
    f= open("D:/123.txt","r",encoding="UTF-8")
except Exception as e:
    print("出现异常了")
    f = open("D:/123.txt","w",encoding="UTF-8")
else:
    print("好高兴,没有异常。")
finally:
    print("我是finally,有没有异常我都要执行")
    f.close()

异常的传递

模块

什么是模块

Python 模块(Module),是一个 Python 文件,以 .Py 结尾,模块能定义函数,类和变量,模块里也能包含可执行的代码,
模块的作用: python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块
我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能.
大白话:模块就是一个Python文件,里面有类、函数、变量,我们可以拿过来用(导入模块去使用)

模块的导入方式

模块在使用前需要先导入 导入的语法如下:
[from 模块名] import [模块 |类|变量 | 函数 |*] [as 别名]
常用的组合形式如:
import 模块名
from 模块名 import 类、变量、方法等
from 模块名 import *
import 模块名 as别名
from 模块名 import 功能名 as 别名

import模块名

基本语法:
import 模块名
import 模块名1,模块名2

模块名.功能名()
案例:导入time模块
# 导入时间模块
import time
print("开始")
# 让程序睡眠1秒(阻塞)
time.sleep(1)
print("结束”)

from 模块名 import 功能名

基本语法:
from 模块名 import 功能名
功能名()
案例:导入time模块中的sleep方法
# 导入时间模块中的sleep方法
from time import sleep
print("开始")
# 让程序睡眠1秒(阻塞)
sleep(1)
print("结束”)

说明:直接导入功能名,调用的时候就不用加模块名了,但是仅能使用该模块导入的该功能

from 模块名 import *

基本语法:
from 模块名 import*
功能名()
案例导入time模块中所有的方法
# 导入时间模块中所有的方法
from time import *
print("开始")
# 让程序睡眠1秒(阻塞)
sleep(1)
print("结束")

起别名

基本语法:
# 模块定义别名
import 模块名 as 别名
# 功能定义别名
from 模块名 import 功能 as 别名
案例:
# 模块别名
import time as tt
tt.sleep(2)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')

总结:1.什么是模块?2.如何导入模块

自定义模块

Python中已经帮我们实现了很多的模块,不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。

注意事项:当导入多个模块的时候,并且模块内有同名功能,当调用这个同名功能的时候,调用的是后面导入模块的功能。

例:

from my_modeul1 import my_test

from my_module2 import my_test

当调用my_test时,调用的是my_module2里的my_test功能。

Python包

如果没有__init.py__就是普通的文件夹。

使用方法

创建包的方式:在项目上,右键,新建python package

导入的写法不同,调用时写法也不同,如下案例

以下导入方式,调用时需加上包名

通过在init.py中,使用all变量可控制导入的模块

第三方包

def str_reverse(s):
    """
    功能是将字符申完成反转
    :param s:将被反转的字符串
    :return:反转后的字符申
    """
    return s[::-1]


def sub_str(s, x, y):
    return s[x:y:1]
def print_file_info(file_name):
    f = None
    try:
        f = open(file_name, "r", encoding="UTF-8")
        print(f.read())
    except FileNotFoundError as e:
        print("文件不存在")
        print(e)
    finally:
        if f:
            f.close()


def append_to_file(file_name, data):
    f = open(file_name, "a", encoding="UTF-8")
    f.write(data)
    f.close()


if __name__ == '__main__':
    print_file_info("D:/a.txtss")

Python数据和Json数据的互相转换

ensure_ascii=False采用UTF-8编码,默认为True,为Ascii编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值