首页 > 其他分享 >11.异常处理与模块

11.异常处理与模块

时间:2022-10-30 19:44:16浏览次数:72  
标签:11 __ 模块 time print import 异常

异常处理

当检测到⼀个错误时,解释器就⽆法继续执⾏了,反⽽出现了⼀些错误的提示,这就是所谓的"异常"。

python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。

异常名称 描述
AttributeError 对象没有这个属性
OSError 操作系统错误
ImportError 导入模块/对象失败
IndexError 序列中没有此索引(index)
KeyError 没有这个键
NameError 未声明/初始化对象 (没有属性)
SyntaxError Python 语法错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
Warning 警告的基类

什么是异常

  • 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

  • 一般情况下,在Python无法正常处理程序时就会发生一个异常。

  • 异常是Python对象,表示一个错误。

  • 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

异常处理

  • 捕捉异常可以使用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位,则抛出异常

# -*- coding:utf-8 -*-

class Error_Project(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}---字符"

def main():
    try:
        pwd = input("请输入密码:")
        if len(pwd) < 6:
            raise Error_Project(len(pwd),6)
    except Exception as exc:
        print(exc)
    else:
        print("密码创建完毕!")

main()

模块

导入模块的方式

  • import 模块名

  • from 模块名 import 功能名

  • from 模块名 import *

  • import 模块名 as 别名

  • from 模块名 import 功能名 as 别名

时间模块time

获取当前时间

从返回浮点数的时间戳方式向时间元组转换,只要将浮点数传递给如localtime之类的函数

import time
now_time1 = time.localtime(time.time())
print(now_time1)
# time.struct_time(tm_year=2022, tm_mon=9, tm_mday=7, tm_hour=15, tm_min=52, tm_sec=32, tm_wday=2, tm_yday=250, tm_isdst=0)

获取格式化的时间

import time
now_time2 = time.asctime(time.localtime(time.time()))
print(now_time2)

格式化日期

import time
# 格式化成2022-09-70 时:分:秒形式
now_time3 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(now_time3)

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)

获取某月日历

Calendar模块有很广泛的方法用来处理年历和月历

import calendar
# 获取2022年,9月份日历
mouth_rl = calendar.month(2022,9)

制造模块

在Python中,每个Python⽂件都可以作为⼀个模块,模块的名字就是⽂件的名字。也就是说⾃定义模块名必须要符合标识符命名规则。

新建一个python文件,命名my_demo,并在里面写一个函数

# -*- coding:utf-8 -*-
def func(a,b):
    print(a+b)

class Func(object):
    def __init__(self,a,b):
        self.a = a
        self.b = b

    def func_demo(self):
        print(self.a+self.b)
如果⼀个模块⽂件中有 __all__ 变量,当使⽤ from xxx import * 导⼊时,只能导⼊这个列表中的元素。
__all__ = ['testA']
def testA():
     print('testA')
def testB():
     print('testB')

调用模块

import 模块名

制作包

[New] — [Python Package] — 输⼊包名 — [OK] — 新建功能模块(有联系的模块)。

导入包

# 方法一
import 包名.模块名
包名.模块名.⽬标
# 方法二
# 注意:必须在 __init__.py ⽂件中添加 __all__ = [] ,控制允许导⼊的模块列表。
from 包名 import *
模块名.⽬标

标签:11,__,模块,time,print,import,异常
From: https://www.cnblogs.com/blog4lyh/p/16842025.html

相关文章

  • 06异常
    异常体系结构Java把异常当作对象来处理,定义一个基类java.lang.Throwable作为所有异常的超类Java异常处理机制处理异常自定义异常......
  • 115.distinct-subsequence 不同的子序列
    问题描述115.不同的子序列解题思路dp[i][j]表示考虑考虑t的前j个字符在s的前i个字符中的出现个数:if(s[i-1]==t[j-1])dp[i][j]=dp[i-1][j-1]+dp[i-......
  • 使用SOUI4的脚本模块
    SOUI4.1提供了全新的lua脚本模块支持,使用这个新版本的脚本模块,可以轻松将所有UI布局及业务逻辑全部使用XML+LUA实现,基本上就是一个超轻型浏览器。SOUI4.0相对于SOUI3最大......
  • Python3.11正式版,它来了!
    转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.top/b055fbf2.html你好,我是测试蔡坨坨。就在前几天,2022年10月24日,Python3.11正式版发布了!Python官方在2020年1月......
  • 第三方模块的下载与使用
    目录一、第三方模块的下载与使用下载第三方模块的方式一:pip工具部分错误解决案例:下载第三方模块的方式二:pycharm中下载pip仓库地址一、第三方模块的下载与使用第三方模......
  • Java 从入门到放弃11 - 《Maven》
    说点题外话,没想到突然又重拾更新,在这期间学习了java的许多知识,还补充了sql语句,数据库相关的内容,由于时间关系,中间部分的内容都没有做相应笔记和博客,因为sql的语句还有中间......
  • P1195 口袋的天空
    最小生成树的板子;使得连通块的数量减小到k即可!数据有点水(printf("NoAnswer");根本没用到QAQ)。#include<bits/stdc++.h>usingnamespacestd;constintN=1e3+7;con......
  • [COMP2119] Searching - Building and Egg Problem
    DescriptionThereisabuildingwith$n$floorsandyouhave$m$eggs.Determinethelowestfloorthrownfromwhichaneggwillbreak.Ifaneggisbroken,it......
  • 【XSY3892】【hihocoder1147】时空阵(分层图dp)
    设\(dp(i,t,l)\)表示已经定好前\(i\)层,共有\(t\)个节点,其中第\(i\)层有\(l\)个节点。直接转移即可,注意一些细节:第\(1\)层只有\(1\)号节点。同层之间......
  • 删掉Win11 22h2文件管理器中的 “主文件夹”
    Win1122h2升级后,文件管理器左侧多了一个"主文件夹"的链接,没啥用还占位置,之前一直较忙没有管它,今天研究了一下,可以通过注册表干掉它:WindowsRegistryEditorVersion5.......