广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一文搞懂python异常处理、模块与包
  • 833
分享到

一文搞懂python异常处理、模块与包

2024-04-02 19:04:59 833人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一 异常处理 1.什么是异常 Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空间不足,方法调用栈溢等。遇到这样的错误,建议让程序终止。 Except

一 异常处理

1.什么是异常

Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空间不足,方法调用栈溢等。遇到这样的错误,建议让程序终止。
Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

2常见异常


IndentationError: 缩进错误
KeyboardInterrupt:  Ctrl+C被按下
UnboundLocalError : 有同名的全局变量
d = {'name':'westos'}
print(d['age'])   # KeyError
 
with open('hello.txt') as f:   # FileNotFoundError
    pass
AttributeError 、IOError 、ImportError 、IndexError、
SyntaxError、TypeError、ValueError、KeyError、NameError

3 异常处理机制

 python 的异常机制主要依赖 try 、except 、else、finally 和 raise 五个关键字。

    try 关键字后缩进的代码块简称 try 块,它里面放置的是可能引发异常的代码;
    except 关键字对应异常类型和处理该异常的代码块;
    多个 except 块之后可以放一个 else 块,表明程序不出现异常时还要执行 else 块;
    finally 块用于回收在 try 块里打开的物理资源,异常机制会保证 finally 块总被执行;
    raise 用于引发一个实际的异常,raise 可以单独作为语句使用,引发一个具体的异常对象

除了处理实际的错误条件之外,对于异常还有许多其它的用处。在标准 Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。
 


#异常处理机制:
  #  else:没有异常时,执行的内容
    #finally: 总会执行的内容
 
 
try:
    a = 1
    print(b)
except NameError as e:
    print('0-name error')
except KeyError:
    print('4-key error')
except Exception as e:
    print('1-exception')
else:
    print('2-no error')
finally:
    print('3-run code')

4 触发异常

Python 允许程序自行引发异常,自行引发异常使用 raise 语句来完成。
raise语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,
args 是自已提供的异常参数。
raise [Exception [, args [, traceback]]]
 


age = int(input('age:'))
if 0<age<150:
    print(age)
else:
    # 抛出异常
    raise ValueError("年龄必须在0~150之间")

5 自定义异常

用户自定义异常都应该继承 Exception 基类或 Exception 的子类,在自定义异常类时基本不需要书写更多的代码,只要指定自定义异常类的父类即可。


# 自定义的异常
class AgeError(ValueError):
    pass

age = int(input('age:'))
if 0<age<150:
    print(age)
else:
    # 抛出异常
    raise AgeError("年龄必须在0~150之间")
    ```

二 模块与包

1.模块

 

 1.1在PyCharm中建立一个python文件hello.py


"""
hello模块的说明文档
"""
digits = '0123456789'
 
def login():
    print('login.......')
 
# __all__当用户使用from module import *时,需要导入的内容。
__all__ = ['digits']
 
# 当模块内部执行时,需要执行的代码。 当模块被导入,则不执行。
if __name__ == '__main__':
    print(__name__)
    # 当在模块内部执行__name__的值为__main__.
    # 当模块被导入时,__name__的值为hello(模块名)

1.2. 注意: 自定义的python文件的文件名一定不要和已有的模块冲突。

1.3. 导入模块实质上是加载并执行模块的内容。

1.4. 导入模块的几种方式:


import  hello
print(hello.digits)
hello.login()

1.5. 模块的其他信息

import sys
print(sys.path) # 模块的查询路径

import hello
print(dir(hello)) # 查看hello模块可以使用的变量和函数…

print(hello.__doc__)# 查看模块的说明文档
print(hello.__file__) # 显示模块的绝对路径
print(hello.__name__) # __name__当模块被导入时,显示的是模块的名称
 

name的特殊用法


import  hello
"""
digits = '0123456789'
def login():
    print('login.......')
print(__name__)  # 当在模块内部执行__name__的值为__main__.
"""

2.包

包将有联系的模块组织在一起,有效避免模块名称冲突问题,让应用组织结构更加清晰。
一个普通的python应用程序目录结构:

2.1. 包实质上是包含__init__.py文件的目录。

2.2. 导入包实质是在做什么? 执行包里面的__init__.py的内容。

2.3. 导入包的方式:

sdk目录下包含的文件:

1.huawei.py
内容:
def create_ecs(): print('创建华为云') def delete_ecs(): print("删除华为云")

2.aili.py
 def create_ecs():
  print('创建阿里云')

def delete_ecs():
  print("删除阿里云")

3._init_.py
from . import  ali
from . import  huawei


from sdk import  ali
from sdk import  huawei
 
ali.create_ecs()
huawei.create_ecs()
 
import  sdk
sdk.ali.create_ecs()
sdk.huawei.create_ecs()

2.4.模块的分类

time模块


import  time
print(time.time())  # 计算时间戳
print(time.ctime()) # 字符串的时间, Sun Feb  7 17:09:55 2021
tuple_time = time.localtime()  # 元组类型的时间
print(tuple_time.tm_year)

datetime


from datetime import date, datetime, timedelta
print(date.today())  # 获取今天的日期
print(datetime.now())  # 获取当前时间2021-02-07 17:13:17.170345
print(date.today() + timedelta(days=3))  # 获取3天后的日期
print(date.today() - timedelta(days=3))  # 获取3天前的日期
print(datetime.now() + timedelta(minutes=10))  # 获取10分钟之后的时间信息
print(datetime.now() - timedelta(minutes=10))  # 获取10分钟之前的时间信息

 random


import  random
print(random.random())  # 生成0-1之间的小数
print(random.randint(1, 10)) # 生成1-10之间的整数
print(random.choice(['li', 'happy', 'fi'])) # 随机选择一个元素
print(random.sample(['ll', 'ff', 'oo'], 2)) # 随机选择n(n=2)个元素
print(random.choices(['ll', 'ff', 'oo'], weights=[100, 10, 10]))  # 随机选择一个元素,可以指定权重

string


import  string
print(string.digits)  # 获取所有的数字
print(string.ascii_letters)
print(string.ascii_lowercase)
print(string.ascii_uppercase)

颜色模块


from colorama import Fore
print(Fore.RED + 'Error: 主机不存在')
print(Fore.GREEN + 'Success: 主机创建成功')

生成测试信息的模块


from faker import  Faker
fake = Faker('zh-cn')
print(fake.name())
print(fake.address())
print(fake.email())

2.5.模块的安装

pip install ** 但在安装的时候较慢,尽量选择合适的源安装
pip install colorama -i https://pypi.douban.com/simple

以上就是python异常处理、模块与包的详细内容,更多关于python异常处理、模块与包的资料请关注编程网其它相关文章!

--结束END--

本文标题: 一文搞懂python异常处理、模块与包

本文链接: https://www.lsjlt.com/news/129178.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文搞懂python异常处理、模块与包
    一 异常处理 1.什么是异常 Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空间不足,方法调用栈溢等。遇到这样的错误,建议让程序终止。 Except...
    99+
    2022-11-12
  • Python之异常处理、模块与包
    MarkdownPad Document程序中错误分成两种语法错误:过不了Python解释器逻辑错误异常处理什么是异常处理Python解释器检测到错误,触发异常,在发生异常时捕捉异常,如果捕捉成功则进入另外一个处理分支,是程序不会崩溃,这就...
    99+
    2023-01-31
    模块 异常 Python
  • 一文搞懂Spring Security异常处理机制
    目录1.异常分类2.ExceptionTranslationFilter3.自定义处理今天来和小伙伴们聊一聊 Spring Security 中的异常处理机制。 在 Spring S...
    99+
    2022-11-13
  • 一文搞懂Python中subprocess模块的使用
    目录简介常用方法和接口subprocess.run()解析subprocess.Popen()解析Popen 对象方法subprocess.run()案例subprocess.cal...
    99+
    2022-11-21
    Python subprocess模块使用 Python subprocess模块 Python subprocess
  • Python模块、包、异常、文件(案例)
    Python模块、包、异常、文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, # 类似Java中的多个单独的Ja...
    99+
    2023-01-30
    模块 异常 案例
  • 一篇文章看懂Java异常处理
    目录异常的定义异常的分类异常的处理方法try…catch处理throw 和throws自定义异常总结异常的定义 在java中,异常就是java在编译、运行或运行过程中出现的错误 总共...
    99+
    2022-11-12
  • 一文读懂Java中的异常处理
    这篇文章将为大家详细讲解有关一文读懂Java中的异常处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、什么是异常     异常的英文单词是exce...
    99+
    2023-05-31
    java 异常处理 ava
  • 一文带你读懂java中的异常处理
    本篇文章为大家展示了一文带你读懂java中的异常处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java异常层次结构Exception异常RuntimeException与非RuntimeExce...
    99+
    2023-05-31
    java 异常处理 ava
  • Node.js 异步异常的处理与domain模块解析
    异步异常处理 异步异常的特点 由于node的回调异步特性,无法通过try catch来捕捉所有的异常: try { process.nextTick(function () { foo.bar()...
    99+
    2022-06-04
    模块 异常 Node
  • 如何理解文件操作与异常模块
    这篇文章主要讲解了“如何理解文件操作与异常模块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解文件操作与异常模块”吧!文件操作我们的程序可以读取文件,也可以写入文件。默认情况下,文件以...
    99+
    2023-06-15
  • python爬虫urllib中的异常模块处理
    目录urllib中的异常处理url的组成部分URLErrorHTTPError简介Urllib.error 模块异常处理urllib中的异常处理 在我们写爬虫程序时,若出现url中的...
    99+
    2022-11-11
  • python爬虫urllib中的异常模块如何处理
    这篇文章主要介绍“python爬虫urllib中的异常模块如何处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python爬虫urllib中的异常模块如何处理”文章能帮助大家解决问题。urllib...
    99+
    2023-06-30
  • Python中模块与包有相同名字的处理方法
    前言 在编程开发中,个人觉得,只要按照规范去做,很少会出问题。刚开始学习一门技术时,的确会遇到很多的坑。踩的坑多了,这是好事,会学到更多东西,也会越来越觉得按照规范做的重要性,规范的制定就是用来规避问题的。...
    99+
    2022-06-04
    模块 名字 方法
  • Python异常处理如何才能写得优雅(retrying模块)
    目录前言不负责任版本简单处理版本改进处理版本安装与使用安装使用总结前言 在写程序时,我们会经常碰到程序出现异常,这时候我们就不得不处理这些异常,以保证程序的健壮性。 处理异常的版本有...
    99+
    2022-11-13
  • python中文件操作与异常的处理图文详解
    目录一、 文件的操作1.1创建文件1.2写入数据1.3读数据1.4读数据1.5读写数据1.6删除文件1.6写入文件1.7读取图片1.8备份图片1.9文件重命名1.10创建文件夹1.1...
    99+
    2022-11-12
  • python中文件操作与异常的处理是怎样的
    本篇文章为大家展示了python中文件操作与异常的处理是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、 文件的操作1.1创建文件格式:f = open(‘文件', ‘w')...
    99+
    2023-06-22
  • 实战分布式医疗挂号通用模块统一返回结果异常日志处理
    目录文章导读一、统一返回结果1.统一返回结果类2.统一返回状态信息类二、统一异常处理1.自定义异常类2.全局异常处理三、统一日志处理文章导读 本系列文章介绍从0开始搭建一个基于分布式...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作