首页 > 其他分享 >异常处理和模块

异常处理和模块

时间:2022-10-08 00:00:07浏览次数:42  
标签:处理 异常 模块 time print import my

一、异常

(一)什么是异常

  • 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
  • 一般情况下,在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("创建密码完毕!")

二、模块

(一)导入模块的方式

  1. import模块名
  2. from 模块名 import 功能名
  3. from 模块名 import *
  4. import 模块名 as 别名
  5. 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

相关文章

  • Windows 11 安装过程特殊情况处理
    跳过TPM进入安装环境后按Shift+F10,打开命令行界面输入regedit打开注册表并定位到如下的位置HKEY_LOCAL_MACHINE\SYSTEM\Setup新建LabConfig的项,在LabConfig下......
  • 在VSCODE的终端运行Python时汉字乱码问题处理
    问题描述在VSCODE的终端运行Python时,打印输出中文时汉字出现乱码,文件编码都是UTF-8解决步骤1、打开Settings配置窗口(Ctrl+,)2、搜索:code-runner.executor如下图所示......
  • 【图解源码】Zookeeper3.7源码分析,包含服务启动流程源码、网络通信源码、RequestProce
    Zookeeper3.7源码剖析能力目标能基于Maven导入最新版Zookeeper源码能说出Zookeeper单机启动流程理解Zookeeper默认通信中4个线程的作用掌握Zookeeper业务处理源码处理流程能......
  • Python语法之异常处理
    前面我们已经介绍了模块的创建和包的应用,在这一小节,我们将继续来学习Python的异常处理方法,了解常见异常的处理方法以及异常的基本概念。1.什么是异常嫦娥本是后羿之妻,......
  • OpenCV模块程序测试PCA和SVM测试【8】
    本博文接上一篇博文,继续进行部分opencvPython示例代码运行效果测试本博文的测试是直接拉取opencv-master4.5.1,然后在opencv/samples/python/tutorial_code/目录下对......
  • OpenCV模块程序测试PCA和SVM测试【7】
    本博文接上一篇博文,继续进行部分opencvPython示例代码运行效果测试本博文的测试是直接拉取opencv-master4.5.1,然后在opencv/samples/python/tutorial_code/目录下对......
  • OpenCV 模块程序测试 HDR 图像合成【6】
    本博文的测试是直接拉取opencv-master4.5.1,然后在opencv/samples/python/tutorial_code/目录下对不同模块py文件进行测试测试数据准备Thisrepositorycontainsextrad......
  • OpenCV 光流计算跟踪、图像镜像翻转处理【4】
    基于颜色分布的连续自适应均值漂移【跟踪】算法(camshiftalgorithm)有兴趣了解这个算法可以自行检索该算法相关文献:​​例如:基于Camshift算法的小球跟踪​​脚本运行输入​​......
  • 暗图像图像修复处理CVPR2021
    ????基本信息RestoringExtremelyDarkImagesinRealTime实时恢复极暗的图像​​github.com/MohitLamba9…​​​​Lamba_Restoring_Extremely_Dark_Images_in_Real_Tim......
  • 初学C语言笔记221007预处理
    预编译:#include头文件的包含    注释删除    #define汇编代码二进制指令预定义符号__FILE____LINE____DATE____TIME____FUNCTION____STDC__如果严格支持AN......