python基础----07-----异常、模块、包

news2024/10/9 14:21:49

一 了解异常

当检测到一个错误时,Python解释 器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUG。

二 异常的捕获

当我们的程序遇到了BUG,那么接下来有两种情况:
①整个程序因为一个BUG停止运行。
②对BUG进行提醒,整个程序继续运行中。

显然在之前的学习中,我们所有的程序遇到BUG就会出现①的这种情况,也就是整个程序直接奔溃。
但是在真实工作中,我们肯定不能因为一个小的BUG就让整个程序全部奔溃,也就是我们希望的是达到②的这种情况。
那这里我们就需要使用到捕获异常。
捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。

基本语法:

try:
	可能发生错误的代码
except:
	如果出现异常执行的代码

2.1 捕获单个异常

if __name__ == '__main__':
    try:
        print(name)
    except NameError as e:
        print("出现了变量未定义的异常")
        print(e)

在这里插入图片描述

2.2 捕获多个异常

if __name__ == '__main__':
	try:
	    print(name)
		#print(1/0)
	except (NameError, ZeroDivisionError):# 元组
		print('变量未定义或者ZeroDivision错误...')

注释print(name)或者print(1/0),结果都一样。
在这里插入图片描述

2.3 捕获所有异常

写法1:
但是这种我们无法得到对应的异常问题,只能根据自己的打印来判断异常的类型。

if __name__ == '__main__':
    try:
        print(name)
        #print(1/0)
    except:
        print("出现异常了")

写法2(这种比较常用):

if __name__ == '__main__':
    try:
        print(name)
        #print(1/0)
    except Exception as e:
        print(e)

这里异常的原因被记录在e中,所以我们只需要打印异常对象e即可。
在这里插入图片描述

2.4 异常else和finally

实际上异常的全部语法是:

try:
	可能发生错误的代码
except:
	如果出现异常执行的代码
else
	没有出现异常执行的代码
finally
	不管有没有异常,都会执行的代码

案例。

if __name__ == '__main__':
    try:
        # 模拟异常,以只读打开一个不存在的文件
        f = open("111abc.txt", "r", encoding="UTF-8")
    except Exception as e:
        print("出现异常了")
        print(e)
        # 出现异常时正确的打开方式。
        f = open("111abc.txt", "w", encoding="UTF-8")
    else:
        print("好高兴,没有异常")
    finally:
        print("我是finally,不管有没有异常,我都会执行")
        f.close()

在这里插入图片描述

三 异常的传递性

在这里插入图片描述

四 模块的概念和导入

模块就是一个Python文件,里面有类、函数、变量等,我们可以拿过来用(导入模块去使用)。

模块的导入方式:
导入的语法如下:

[from模块名] import [模块||变量|函数|*] [as别名]

常用的组合形式如:

import 模块名
from 模块名 import 类、变量、方法等
from 模块名 import *
import 模块名 as别名.
from 模块名 import 功能名 as 别名
if __name__ == '__main__':
    # 1. 使用import导入time模块使用sleep功能(函数)
    # import time
    # 导入Python内置的time模块(time. py这个代码文件)
    # print("你好")
    # time.sleep(5)
    # 通过time.xxx就可以使用模块内部的全部功能(类、 函数、变量)
    # print("我好")

    # 2. 使用from导入time的sleep功能(函数)
    # 这种只能使用sleep这种方法,并且不需要加上"time."前缀
    # from time import sleep
    #
    # print("你好")
    # sleep(5)
    # print("我好")

    # 3. 使用 * 导入time模块的全部功能
    # *实际是导入了一个__all__变量的内容,不修改该变量默认导入所有
    # from time import *
    # # *表示全部的意思
    # print("你好")
    # sleep(1)
    # print("我好")

    # 4. 使用as给特定功能加上别名.
    # 这种只是给模块起了别名
    import time as t

    print("你好")
    t.sleep(1)
    print("我好")

五 自定义模块并导入

在这里插入图片描述

再同级文件下创建my_modle1.py。
在这里插入图片描述

#my_modle1.py
def add(a,b):
    print(a+b)

在main.py中写如下:

if __name__ == '__main__':

    # import my_modle1
    # my_modle1.add(1,2)

    # from my_modle1 import add
    # add(1,2)

    from my_modle1 import add as asdfasdasd
    asdfasdasd(1, 2)

在这里插入图片描述

注意事项:
1)引入多个模块存在同样的函数名的问题:
如果有两个模块(引入别人的),分别是模块1,模块2,都有同样的函数名my_test(a, b),当在自己的模块(称为模块3)import了模块1和模块2,那么my_test是使用最后导入的那个模块的函数,因为在python会覆盖。例如下图,模块2的my_test在后面导入,所以my_test(1, 1)调用的是模块2的函数。

在这里插入图片描述

2)测试模块问题:
解决方法看下图。原因是当你运行某个模块,只有运行的那个模块的__name__的值才是__main__,而通过导入的方式不符合该条件。
在这里插入图片描述

3)__all__变量:
每个模块文件都有一个__all__变量,当使用"from xxx import *“导入时,这个” * "实际上就是__all__变量的内容,我们可以通过修改__all__变量去限制外部能调用该模块的函数。
在这里插入图片描述

六 自定义Python包

什么是Python包?
从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__ .py 文件,该文件夹可用于包含多个模块文件
从逻辑上看,包的本质依然是模块。
在这里插入图片描述

包的作用:
当我们的模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。
你可以认为__init__.py是一个标志,当你创建一堆文件放到文件夹中,不放入__init__.py,他就是装着各种.py的文件夹。如果包含__init__.py,说明该文件夹是一个包!

下面我们开启自定义python包。

  1. 创建包文件夹。右击项目目录(我的是Py)->New->Python Package。
    在这里插入图片描述
    名字随便,我这里是my_package。
    在这里插入图片描述
    在my_package包添加两个模块文件,my_module1.py、my_module2.py。
    在这里插入图片描述

在mian.py添加:

# 大家也可以按照自己喜欢的方式进行导入包
import my_package.my_module1
import my_package.my_module2

if __name__ == '__main__':
    my_package.my_module1.print1()
    my_package.my_module2.print2()

运行main.py:
在这里插入图片描述

七 安装第三方包

我们知道,包可以包含一堆 的Python模块,而每个模块又内含许多的功能。
所以,我们可以认为:一个包,就是一堆同类型功能的集合体。
在Python程序的生态中,有许多非常多的第三方包(非Python官方),可以极大的帮助我们提高开发效率,如:

  • 科学计算中常用的: numpy包。
  • 数据分析中常用的: pandas包。
  • 大数据计算中常用的: pyspark、 apache-flink包。
  • 图形可视化常用的: matplotlib. pyecharts。
  • 人工智能常用的: tensorflow
  • 等等。

这些第三方的包,极大的丰富了python的生态。
但是由于是第三方,所以Python没有内置,所以我们需要安装它们才可以导入使用哦。

第三方包的安装非常简单,我们只需要使用Python内置的pip程序即可。
打开我们许久未见的:命令提示符程序,在里面输入:

pip install 包名称

例如:

# 注意不要进python环境,是直接在cmd运行即可。
# -i 是使用国内的清华源进行加速。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

在pycharm内安装第三方包:
打开设置。
在这里插入图片描述
在这里插入图片描述
安装成功会有提示。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AcWing算法提高课-1.3.14开心的金明

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 金明今天很开心&#xff0c;家里购置的新房就要领钥匙了&#xff0c;新房里有一间他自己专用的很宽敞的房间。 更让他高兴的是&…

Vue.js中的Render函数和模板语法

Vue.js中的Render函数和模板语法 在Vue.js中&#xff0c;有两种主要的方式来构建组件&#xff1a;使用模板和使用render函数。模板语法是Vue.js中最常见的方式&#xff0c;它是一种基于HTML的语法&#xff0c;能够直接在HTML文件中定义组件的结构和行为。而render函数则是一种…

公司新来一00后,真让人崩溃...

2022年已经结束结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的…

设计模式(五):创建型之建造者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 目录 一、…

让ChatGPT来写今年的高考作文,会得几分?

使用最新的ChatGPT4模型&#xff0c;做2023年全国甲卷的高考作文。 作文考试题目如下 人们因技术发展得以更好地掌控时间&#xff0c;但也有人因此成了时间的仆人。这句话引发了你怎样的联想与思考?请写一篇文章。 要求&#xff1a;选准角度&#xff0c;确定立意&#xff0…

promise、async事件循环机制,你是CV工程师?

在面试的过程中如果不了解promise、async事件循环机制基本就会认为你是CV工程师 首先分析 async/await 其实是基于promise实现的&#xff0c;async 函数其实就是把 promise 做了一个包装 promise 是es6的语法&#xff0c;async/await 是es7的语法糖&#xff0c;所以我们先来分析…

​即将开幕!​2023 年金融营销科技价值发现论坛亮点前瞻

由神策数据主办 Hi-Finance、爱设计、亚马逊云科技 协办和支持的 开放融合 引领营销 5.0 新纪元 暨 2023 年金融营销科技价值发现论坛 即将于 6 月 9-10 日在中国杭州开幕 届时百余位金融数字化从业者将共聚一堂 探讨金融业发展的新思路、新路径、新趋势 2023 年&#xff0c;数…

Windows电脑怎么加密文件?文件加密方法介绍

Windows作为目前使用人数最多的电脑系统&#xff0c;是很多人办公、生活的必要工具。那么你知道在Windows系统中该怎么样加密文件吗&#xff1f;下面我们就来一起了解一下。 方法一&#xff1a;文件夹加密超级大师 想要做好文件加密并不容易&#xff0c;需要保障文件加密的安全…

APP外包开发第三方登录

APP开发过程中往往需要对接第三方的登录&#xff0c;国内的有微信、QQ、微博等&#xff0c;国外的有google、facebook等账号。对接第三方账号登录SDK可以方便用户快捷登录&#xff0c;是APP登录功能里一项重要的特性。今天和大家分享对接流程和注意事项&#xff0c;希望对大家有…

三维数字沙盘交互大数据可视化GIS地理信息系统第十课

三维电子沙盘交互无人机倾斜摄影大数据可视化GIS地理信息系统第十课 设置system.ini 如下内容 Server122.112.229.220 userGisTest Passwordchinamtouch.com 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 在SDK中自带了一个自定义的基础面…

公司规定所有接口都用 post 请求,这是为什么?

文章来源&#xff1a;https://www.zhihu.com/question/336797348 目录 背景 get 与 post 的区别 所有接口都用 post 请求&#xff1f; 背景 最近在逛知乎的时候发现一个有趣的问题&#xff1a;公司规定所有接口都用 post 请求&#xff0c;这是为什么&#xff1f; 看到这个问…

正在改变一切的Ai聊天机器人

ChatGPT通过Al生成的内容让我们眼花缭乱&#xff0c;从一个聊天机器人转化成推动一个创新时代的技术&#xff0c;但&#xff0c;也并非人人都知道&#xff0c;那么&#xff0c;你知道Chatgpt到底是什么吗&#xff1f; 文章目录 前言一、什么是Chatgpt&#xff1f;二、如何使用C…

实用性网站推荐

1、自动去除背景图&#xff0c;上传图片后免费生成已去除背景的图片 &#xff0c;对于有抠图需求的极为友好&#xff01; https://www.remove.bg/zh/upload 2、生成各种比例的图片&#xff0c;自动调整图片尺寸大小 https://imagestool.com/zh_CN/resize-images.html 3、符号…

腾讯云服务器远程连接登陆的方法

腾讯云服务器怎么连接登录&#xff1f;腾讯云服务器支持多种远程连接方法&#xff0c;可以使用腾讯云管理控制台自带的远程连接工具&#xff0c;也可以使用第三方远程连接工具&#xff0c;如如PuTTY、Xshell等&#xff0c;Linux操作系统可以SSH登录&#xff0c;Windows可以使用…

力扣 37. 解数独

一、题目描述 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字&#xf…

优化 Three.js 渲染性能的实用技巧

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。喜欢的话请三连&#xff0c;有问题请私信或者加微…

人工智能-实验三

第三次实验 一.实验目的 ​ 掌握分类算法的算法思想&#xff0c;包括朴素贝叶斯算法&#xff0c;决策树算法等。编写朴素贝叶斯算法进行分类操作。本实验主要是关于朴素贝叶斯算法的实现&#xff0c;在完成本实验时也复习了课程中学习的决策树分类算法的思想。 二.实验原理 …

武汉涉密系统集成资质申报的重点和难点浅析

企业想要申报涉密系统集成资质&#xff0c;首先要确定好申请的级别&#xff1a;涉密系统集成资质分甲级和乙级两个级别&#xff0c;这个一个是看公司体量&#xff0c;另外一个是看公司以后所承接的项目密级级别。级别确定好后还要确定申请哪个类别&#xff0c;涉密系统集成资质…

项目管理专业人员能力评价等级证书(CSPM)的级别介绍

2021年10月&#xff0c;中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项…

使用Go和Gin编写RESTFul API

使用Go和Gin开发RESTFul API 对应的代码仓库地址&#xff1a;gocode 本篇内容介绍如何使用Go和 Gin Web Framework来编写RESTFul API 服务的基础知识。如果你还对Go的基础操作不熟悉的话最好还是先看一下: 入门教程 Gin是一个Go语言的Web开发框架&#xff0c;它简化了构建Web应…