一、异常
(一)什么是异常
- 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
- 一般情况下,在python无法正常处理程序时就会发生一个异常。
- 异常python对象,表示一个错误。
- 当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
(二)异常处理
- 当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的”异常“。
- python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。
异常名称 | 描述 |
AttributeError | 对象没有这个属性 |
OSError | 操作系统错误 |
ImportError | 导入模块/对象失败 |
IndexError | 序列中没有此索引(index) |
KeyError | 没有这个键 |
NameError | 未声明/初始化对象(没有属性) |
SyntaxError | python语法错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
Warning | 警告的基类 |
(三)异常的try和except
- 捕捉异常可以使用try/except语句
- try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
- 如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try: 可能会发送错误的语句 except: 发生错误后执行的语句
实例
try: print(name) except NameError: print("发生错误")
如果尝试执⾏的代码的异常类型和要捕获的异常类型不⼀致,则⽆法捕获异常。
- 捕获多个异常
try: print(1/0) except (NameError, ZeroDivisionError): print('有错误')
(四)异常的else
- else表示的是如果没有异常要执行的代码。
try: print(123+"456") except Exception: print(456) else: print(789)
(五)异常的finally
- finally表示的是⽆论是否异常都要执⾏的代码,例如关闭⽂件。
try: f = open("test.txt","r") print("没有异常,正常创建") except Exception: print("出现异常,重新创建") f = open("test.txt","w") finally: f.close()
(六)自定义异常
自定义异常类,必须要继承Exception,并且包含init和str魔术方法(设置异常描述)
在python中,抛出自定义异常的语法为raise异常类对象。
- 需求:输入密码,如果密码长度不足6位,则抛出异常
class Error_my(Exception): def __init__(self,password,password_len): self.password = password self.password_len = password_len def __str__(self): return (f"你输入的密码长度为--{self.password}--位,请输入超过--{self.password_len}--位的密码") class main(): try: pwd = input("请输入你所要创建的密码:") if len(pwd) < 6: raise Error_my(len(pwd),6) except Exception as a: print(a) else: print("创建密码完毕!")
二、模块
(一)导入模块的方式
- import模块名
- from 模块名 import 功能名
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
(二)时间模块time
1、获取当前时间
从返回浮点数的时间戳方式向时间元组转换,只要将浮点数传递给如localtime之类的函数
import time now_time1 = time.localtime(time.time()) print(now_time1) -------------------------------- time.struct_time(tm_year=2022, tm_mon=10, tm_mday=7, tm_hour=23, tm_min=19, tm_sec=5, tm_wday=4, tm_yday=280, tm_isdst=0)
2、获取格式化的时间
import time now_time2 = time.asctime(time.localtime(time.time())) print(now_time2) ----------------------------- Fri Oct 7 23:19:51 2022
3、格式化日期
python中时间日期格式化符号
年
-
%y 两位数的年份表示(00-99)
-
%Y 四位数的年份表示(000-9999)
月
-
%m 月份(01-12)
日
-
%d 月内中的一天(0-31)
时
-
%H 24小时制小时数(0-23)
-
%I 12小时制小时数(01-12)
分
-
%M 分钟数(00-59)
秒
-
%S 秒(00-59)
import time # 格式化成2022-10-70 时:分:秒形式 now_time3 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) print(now_time3) ------------------------------------- 2022-10-07 23:21:18
(三)获取某月日历
Calendar模块有很广泛的方法用来处理年历和月历
import calendar # 获取2022年,10月份日历 mouth_rl = calendar.month(2022,10) ----------------------------- September 2022 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
(四)制造模块
在Python中,每个Python⽂件都可以作为⼀个模块,模块的名字就是⽂件的名字。也就是说⾃定义模块名必须要符合标识符命名规则。
新建一个python文件,命名my_demo,并在里面写一个函数
def demo1(a,b): print(a+b) def demo2(a,b): print(a-b)
再新建一个python文件,命名my_demo1,在里面调用my_demo模块
import my_demo my_demo.demo1(10,20) my_demo.demo2(10,20) ------------------------ 30 -10
如果⼀个模块⽂件中有 __all__ 变量,当使⽤ from xxx import * 导⼊时,只能导⼊这个列表中的元素。
如my_demo,my_demo1文件为例
__all__ = ["demo1"] def demo1(a,b): print(a+b) def demo2(a,b): print(a-b)
在my_demo1文件里调用时,只能调用__all__列表里的函数
from my_demo import demo1 demo1(10,20) demo2(10,20) # 报错 ------------------------ 30
(五)制作包
1、在文件中新建文件包(package)命名为my_package,然后创建my_demo6文件,并写入函数
def demo6(): print("我是demo6")
2、再在新建文件包(my_package)中新建一个文件my_demo7,并写入函数
def demo7(): print("我是demo7")
3、新建文件my_demo8,导入前两个文件中的函数,进行调用。
import my_package.my_demo6 import my_package.my_demo7 my_package.my_demo6.demo6() my_package.my_demo7.demo7() ------------------------------------ 我是demo6 我是demo7
4、若觉得调用函数名过于繁琐,导入模块时可从繁入简。
import my_demo6 as a import my_demo7 as b a.demo6() b.demo7() --------------------------- 我是demo6 我是demo7
标签:处理,异常,模块,time,print,import,my From: https://www.cnblogs.com/LoLong/p/16767152.html