python学习之路 - python的异常、模块与包

news2024/11/25 10:47:36

目录

  • 一、python的异常、模块与包
    • 1、了解异常
    • 2、异常的捕获方法
        • a、捕获基本异常
        • b、捕获指定异常
        • c、捕获多个异常
        • d、捕获异常后的finally
    • 3、异常的传递
    • 4、python模块
        • a、定义
        • b、基础语法
        • c、使用方法
        • d、补充
    • 5、python包
        • a、定义
        • b、操作方法
        • c、使用方法
    • 6、安装第三方python包
        • a、命令符方式安装
        • b、pyCharm方式安装

一、python的异常、模块与包

1、了解异常

当程序检测到一个错误,python解释器就无法继续执行,则会提示一些错误信息,这就是异常。
程序运行过程中,不能直接将异常信息返回给用户,所有需要捕获异常

当访问一个不存在的文件时,会提示如图的异常信息
在这里插入图片描述

2、异常的捕获方法

a、捕获基本异常
写法一:
try:
	可能发生错误的代码
except:
	出现异常显示的代码
else:							#else这部分可省略
	没有异常时想继续执行的代码
finally:						#finally这部分可省略
	无论是否有异常都要执行

写法二:
try:
	可能发生错误的代码
except Exception as e:
	出现异常显示的代码
#捕获程序异常
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except:
    print("文件打开异常")

结果:
文件打开异常
b、捕获指定异常
try:
	可能发生错误的代码
except 异常名 as e:
	出现异常显示的代码
#捕获文件不存在的异常
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except FileNotFoundError as e:
    print("文件不存在")
    print(e)

结果为:
文件不存在
[Errno 2] No such file or directory: 'C:/Users/HLY/Desktop/noFile.txt'
c、捕获多个异常
写法一:
try:
	可能发生错误的代码
except (异常名1,异常名2...) as e:
	出现异常显示的代码

写法二:
try:
	可能发生错误的代码
except 异常名1 as e:
	出现异常显示的代码
except 异常名2 as e:
	出现异常显示的代码
...
d、捕获异常后的finally

如果捕获异常后,try模块中的程序不会执行错误信息之后的代码,如果想要不管程序是否报错都要执行,则后面加finally

try:
	可能发生错误的代码
except:
	出现异常显示的代码
finally:
	无论是否有异常都要执行的内容
#打开文件后必须要关闭文件
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except FileNotFoundError as e:
    #文件如果不存在则创建文件
    print("文件不存在")
    f = open('C:/Users/HLY/Desktop/noFile.txt', 'w', encoding='utf-8')
finally:
	print("我也执行啦!")
    #关闭文件资源
    f.close()

结果:
文件不存在
我也执行啦!

3、异常的传递

  • 当多个函数之间调用时,如果底层函数未捕获异常,则会传递到上层函数,一直到有捕获异常的函数处抛出指定的信息
  • 如果所有函数都没有捕获异常,则程序会输出报错信息
  • 所以,如果多个函数之间调用时,要捕获异常最简单的方式只需要在最上层的函数捕获异常即可

4、python模块

a、定义
  • python模块是一个python文件,以.py结尾,模块能定义函数,类和变量,也能包含可执行的代码
  • 可以导入模块后,直接用其中已经定义好的函数
  • 如果多个导入的函数名一样,后面的会将前面的覆盖
b、基础语法
[from 模块名] import [模块 || 变量 | 函数 | *] [as 别名]

[]在这里表示可选

常用的组合形式:

  • import 模块名
  • from 模块名 import 类
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
c、使用方法

导入内置模块time中的所有函数,并使用sleep()函数

#写法一
import time     	#导入内置的time模块
time.sleep(1000)    #调用time模块中sleep函数,此种方法需要加time.才能使用sleep函数

#方法二
from time import *		#导入内置的time模块所有函数
sleep(1000)				#直接调用sleep函数,此种方法可直接调用sleep

导入内置模块time中的sleep()函数,并使用此函数

from time import sleep    #导入内置的time模块中的sleep函数
sleep(1000)   			 #调用time模块中sleep函数

导入内置模块time中的sleep()函数,别名为t

from time import sleep as t
t(1000)
d、补充

如果模块A中定义了_ _all_ _,那么模块B以 import * 的方式引入时,只会引入_ _all_ _中定义的函数,不会引入模块A中的全部函数

# moduleA
__all__ = ['test_A']
def test_A():
	print('testA')
def test_B():
	print('testB')

#moduleB
from moduleA import *
#此时这里只能用test_A函数

5、python包

a、定义
  • 物理层面的角度,python包就是一个文件夹,此文件夹下包含__init__.py文件和各种.py文件,包的本质依然是模块
  • 文件夹下有__init__.py文件,则为python包,无此文件则为普通的文件夹
b、操作方法
  1. 打开Pycharm软件,选择根目录鼠标右键
  2. 选择New
  3. 选择Python Package
    在这里插入图片描述
  4. 设置包名,点击enter键
    在这里插入图片描述
  5. 会自动出现下图红框中的内容
    在这里插入图片描述
c、使用方法
  1. 创建python包,名为module
  2. 新建module1.py模块,定义函数module_A
def module_A():
    print("This is module A")
  1. 新建module2.py模块,定义函数module_B
def module_B():
    print("This is module B")
  1. 包外面的其他模块中调用定义的函数
#写法一
import module.module1
import module.module2
module.module1.module_A()
module.module2.module_B()

#写法二
from module import module1,module2
module1.module_A()
module2.module_B()

#写法三
from module.module1 import module_A
from module.module2 import module_B
module_A()
module_B()

#写法四
#第一步:在包的__init__模块中添加__all__的配置
__all__ = ['module1','module2']
#第二步:其他模块中*号形式调用
from module import *
module1.module_A()
module2.module_B()

6、安装第三方python包

a、命令符方式安装
  1. 打开电脑命令提示符程序
    • 方法一:电脑左下角输入“命令提示符”,选择即可
    • 方法二:windows+R快捷键,输入cmd,点击确定即可
  2. 执行
    • pip install 包名称(此种方法连接的是外网,所以速度很慢)
    • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称(此种方法连接的是国内网站,速度快一些)
# 安装第三方numpy包
#方法一
pip install numpy		#此种方法连接的是外网,所以很慢
#方法二
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
b、pyCharm方式安装
  1. 打开pyCharm软件,右下角点击如图①的位置
  2. 选择interpreter Settings
    在这里插入图片描述
  3. 点击如图+号
    在这里插入图片描述
  4. 在输入框中输入想要安装的第三方包名,如图查询的是numpy
  5. 右下角Options中输入 -i https://pypi.tuna.tsinghua.edu.cn/simple
  6. 点击左下角的install Package
    在这里插入图片描述
  7. pyCharm右下角可以看到安装进程
    在这里插入图片描述

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

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

相关文章

MVC和三层架构

👉参考文章:mvc简介,mvc与三层架构的区别 一.MVC是什么? Model-View-Controller(MVC)是一种软件架构模式,是软件设计模式的体现 ,用于组织代码并分离关注点,广泛应用于…

GPS和桩号互转

文章目录 前言一、通过bigmap软件生成坐标信息csv二、Java实现1.CSV分隔2.计算2.1 读取gps_data.csv2.2 读取piles.csv2.3 进行线性插值2.4 返回值实体2.5 根据GPS坐标计算距离工具2.6 根据GPS坐标读取桩号2.7 根据桩号读取GPS坐标(根据距离计算,找到最近的桩号) 前…

短视频SDK解决方案,智能技术加持,提升创作效率

随着社交媒体、直播电商、在线教育等领域的蓬勃发展,短视频以其独特的魅力迅速崛起,成为内容创作与传播的新风口。为了助力企业和个人轻松拥抱视频化趋势,美摄科技匠心打造了一套高效、易用的短视频SDK解决方案,以“轻编辑&#x…

【高级IO-2】IO多路转接之Select(概念及代码实例)

文章目录 I/O 多路转接 之 Select1. 了解select2. select 函数原型① fd_set 结构② 详细理解参数(readfds为例) 3. 理解select的执行过程4. select代码实例:监视多个文件描述符5. Socket就绪条件6. select代码实例:多路复用服务器…

每日掌握一个科研插图·2D密度图|24-08-21

小罗碎碎念 在统计学和数据可视化领域,探索两个定量变量之间的关系是一种常见的需求。为了更深入地理解这种关系,我们可以使用多种图形表示方法,这些方法在本质上是对传统图形的扩展和变体。 散点图:这是最基本的图形&#xff0c…

什么是 JavaConfig?

什么是 JavaConfig? 💖The Begin💖点点关注,收藏不迷路💖 JavaConfig是Spring框架的一项创新,它允许开发者使用纯Java代码来配置Spring IoC容器,从而避免了繁琐的XML配置。这一特性带来了诸多优…

【微信小程序】导入项目

1.在微信开发工具中,点击【导入项目】 2.在打开的界面中执行2个步骤 1.找到要导入项目的路径2.AppID要改成自己的AppID 3.package.json包初始化【装包之前要确保有package.json文件】 1.在【资源管理器】空白处,点击鼠标右键,选择【】&am…

免费的真是太香了!Chainlit接入抖音 Coze AI知识库接口快速实现自定义用户聊天界面

前言 由于Coze 只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPT web/open webui等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办…

[Python可视化]空气污染物浓度地图可视化

[Python可视化]空气污染物浓度地图可视化,果然是路边浓度最大 在本篇文章中,我将展示如何使用 Python 结合 OSMnx、NetworkX 和 GeoPandas 等库,计算给定路径的最短路线,并基于该路径穿过的网格单元计算总污染量。最终&#xff0c…

uniapp 修复使用 uni.saveImageToPhotosAlbum 方法在部分安卓手机上保存失败

场景:使用 uni.saveImageToPhotosAlbum 保存图片,其他手机都是可以的,但在鸿蒙系统的手机上出现了bug,报错Object {errMsg:"savelmageToPhotosAlbum:fai..errMsg:savelmageToPhotosAlbum:fail invalid filetype"} 原因&…

数学建模学习(116):全面解析梯度下降算法及其在机器学习中的应用与优化

文章目录 1.梯度下降简介1.1 梯度下降的数学原理1.2 学习率的选择2 梯度下降变体3.梯度下降优化器3.1 动量法(Momentum)3.2 AdaGrad3.3 RMSprop3.4 Adam3.5 Python 使用不同优化器训练线性回归模型4.案例:使用梯度下降优化加利福尼亚房价预测模型4.1. 数据准备4.2. 模型训练…

【dotnet】Ubuntu 24.04安装dotnet 8.0报错

我的环境是Ubuntu 24.04,64位,使用azure的虚拟机。 报错文字如下: kidfuazurefu:~$ sudo apt install dotnet-sdk-8.0 Reading package lists... Done Building dependency tree... Done Reading state information... Done Some packages c…

数学生物学-3-固定点、稳定性和蛛网图(Fixed Points, Stability, and Cobwebbing)

在前一篇博客中,我们研究了一些离散时间模型的例子。特别是,我们推导出了离散逻辑方程的重要例子。 数学生物学-2-离散时间模型(Discrete Time Models)-CSDN博客 在本篇文章中,我们将考虑离散时间模型的一般形式(在数…

超声波水表是什么?量程比又是什么?

一、超声波水表概述 1.定义: 超声波水表是一种利用超声波技术来测量水流速度,进而计算出流经管道的水体积流量的计量设备。它通过发送和接收超声波信号的时间差来确定水流的速度,从而精确地计量水的流量。 2.工作原理: 超声波…

勇闯计算机视觉(第一关--环境激活)

以下内容,皆为原创,制作实属不易,多谢帅锅和镁铝观看和关注。 一.什么是计算机视觉 计算机视觉是人工智能的一个分支,它使计算机能够从图像或多维数据中解释和理解视觉信息。计算机视觉的目标是模拟人类视觉系统的能力&#xff0c…

普元EOS-数据实体运行时动态增加property

1 前言 在Java开发读取数据的时候,一般都采用ORM方式将数据表的字段映射到实体对象中。 数据表中有一个字段,实体对象就有一个字段。 但很多时候,我们在读取的数据和显示的数据不同,比如,读取的是部门id&#xff0c…

java多线程(七)AQS(AbstractQueuedSynchronizer)技术解析:以赛跑起跑场景为例

AQS概括 核心思想 AQS(AbstractQueuedSynchronizer)是Java并发包中的一个核心同步器框架,它定义了一套多线程访问共享资源的同步机制。 其核心思想是:利用一个volatile的int类型的变量state来表示同步状态,并通过一…

微信自动回复,周末也能轻松应对!

相信很多人都有过这样的经历:休息的时候,手机响个不停,生怕漏掉一个客户消息,结果一不小心就让客户流失了! 要想解决这个问题,你只需一个多微管理系统,让我们一起来看看它的自动回复设置吧&…

这个方法完美解决我的Jenkins插件不能下载安装的问题

1、打开这个地址(前提是jenkins是开启的哦)http://localhost:8080/pluginManager/advanced 。 2、在最下面update site 改成http://updates.jenkins.io/update-center.json 。 3、服务列表中关闭jenkins,再重新启动,就能联网下载了…

叉车AI行车防撞监控系统方案,二级报警区域,守护人与车的安全!

九盾叉车AI行车防撞监控系统安装在叉车驾驶室顶的前后单独安装ADAS摄像头,结合深度学习算法以完成机器视觉的识别工作,分别安装在车辆护顶架前后方,进行180二级区域视频监控,同时解决二个方向维度的视野盲区,可根据距离…