当前位置: 首页 > news >正文

python异常、模块与包

1.异常

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

1.1捕获异常

基本语法:

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

代码示例:

# 尝试以r模式打开文件,如果报错以w模式打开
try:open('quiz.txt', 'r')
except:open('quiz.txt', 'w')

1.2捕获指定异常

如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
一般try下方只放一行尝试执行的代码。
基本语法:

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

代码示例:

try:print(name)
except NameError as e:print(e)

1.3捕获多个异常

通过元组的方式进行书写。
基本语法:

try:可能发生错误代码
except (异常,异常,...) as e:如果出现异常则执行的代码

代码示例:

try:1/0
except (NameError,ZeroDivisionError) as e:print(e)

1.4捕获全部异常

基本语法:

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

代码示例:

try:1/0print(name)
except Exception as e:print(e)

1.5异常的else和finally语法

1.5.1异常的else

else表示没有出现异常要执行的代码。
基本语法:

try:可能发生错误代码
except Exception as e:如果出现异常则执行的代码
else:没有出现异常执行的代码

代码示例:

try:1 / 0
except Exception as e:print(e)
else:print("无异常")

1.5.2异常的finally

finally表示无论是否出现异常都要执行的代码。
基本语法:

try:可能发生错误代码
except Exception as e:如果出现异常则执行的代码
else:没有出现异常执行的代码
finally:无论如何都要执行的代码

代码示例:

try:1 / 0
except Exception as e:print(e)
else:print("无异常")
finally:print("无论如何都要执行")

1.6异常的传递性

当函数func01中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候main函数会捕获这个异常,这就是异常的传递性。
当所有函数都没有捕获异常的时候,程序就会报错。
代码示例:

def func01():0/1def fun02():func01()def main():fun02()
main()

2.模块(Module)

模块是一个python文件,能定义函数、类和变量,模块里也能包含可执行的代码。

模块的作用: python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。

2.1模块的导入方式

2.1.1 import 模块名

导入一个模块。
基本语法:

import 模块名
import 模块名1,模块名2模块名.功能名()

代码示例:

# 导入time模块
import time
# 让程序睡眠5s
time.sleep(5)

2.1.2 from 模块名 import 类、变量、方法等

导入一个模块的指定功能。
基本语法:

from 模块名 import 功能名功能名()

代码示例:

# 导入时间模块sleep
from time import sleep
# 让程序睡眠5s
sleep(5)

2.1.3 from 模块名 import *

导入模块的所有方法。

基本语法:

from 模块名 import *功能名()

代码示例:

# 导入模块的所有方法
from time import *
# 让程序睡眠5s
sleep(5)

2.1.4 import模块名 as 别名

将模块导入之后设置一个别名。

基本语法:

import模块名 as 别名别名.功能()

代码示例:

# 导入time模块,取别名为t
import time as t
# 让程序睡眠5s
t.sleep(5)

2.1.5 for 模块名 import 功能名 as 别名

指定导入模块的功能,取别名。
基本语法:

from 模块名 import 功能 as 别名
别名()

代码示例:

# 导入time模块的sleep功能,取别名为s
from time import sleep as s
# 让程序睡眠5s
s(5)

2.2自定义模块并导入

Python中已经帮我们实现了很多的模块.不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。
新建一个Python文件,命名为my_module1.py,并定义test函数。

模块中的__main__与__all__
__main__可写在自定义模块中进行测试,同时测试部分不会影响到调用这个模块的部分。

def add(a, b):print(a + b)if __name__ == '__main__':add(1, 2)

当一个模块中有all变量时,使用 from 模块名 import *只会导入all列表中的功能。

all('add1')
def add1(a, b):print(a + b)def add2(a, b):print(a + b)if __name__ == '__main__':add1(1, 2)

注意:

  • 每个Python文件都可以作为一个模块,模块的名字就是文件的名字.也就是说自定义模块名必须要符合标识符命名规则。
  • 当导入不同模块的同一个名的功能,后导入的会将先导入的覆盖。

3.包

3.1python包

  • 从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__.py文件(有这个文件则是python包),该文件夹可用于包含多个模块文件。
  • 从逻辑上看,包的本质依然是模块。

包的作用:当我们的模块文件越来越多时,包可以帮助我们管理这些模块。

pycharm新建包:右键文件夹—>New—>Python Package
在这里插入图片描述

导入包的三种基本语法:

import 包名.模块名
包名.模块名.功能()from 包名 import 模块名
模块名.功能()from 包名.模块名 import 功能
功能()

3.2安装第三方包

3.2.1 cmd安装第三方包

打开命令行,输入pip install 包名进行第三方包的安装。

pip install 包名

由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。
可以通过如下命令,让其连接国内的网站进行包的安装:

pip install -i 网站链接 包名 
pip install -i http://mirrors.aliyun.com/pypi/simple/ 包名
以下是国内的一些包安装的网站链接:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/ 

3.2.2 pycharm安装第三方包

打开pycharm,看到右下角。
在这里插入图片描述
点击python—>选择Interpreter Settings…。
在这里插入图片描述
进入页面后可看到已安装的包,选择+号可打开安装第三方包的界面。
在这里插入图片描述
界面可进行搜索、选择包的版本、以及使用国内链接下载安装。
在这里插入图片描述

相关文章:

python异常、模块与包

1.异常 异常:当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUG。 1.1捕获异常 基本语法: try:可能发生错误代码 except:如果出现…...

虚拟内存和物理内存

虚拟内存的概念 虚拟内存是计算机系统内存管理的一种技术,它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储…...

FCA例题

Part.1:判断题 第1题 智能运维-负载管理中,实时负载通过使用图表直观的展示当前系统的最多最近半小时内存利用率和CPU利用率(正确) 第2题 服务器安装插件支持热部署,安装、删除、更新、禁用、启用不需要重启(正确) 第3题 次级管理员可新建…...

mysql使用GROUP BY归组后把所有记录id汇总到一个字段中

可以使用MySQL的GROUP_CONCAT函数来实现将归组后的记录的ID汇总到一个字段中。假设有一个名为table1的表,其中包含id和name两个字段,可以使用以下查询: SELECT name, GROUP_CONCAT(id) AS ids FROM table1 GROUP BY name;这将返回一个结果集…...

Vue3 使用Element Plus表格单选带checkbox

官方地址&#xff1a;添加链接描述 官方给出的多选带checkbox&#xff0c;单选直接选中当前行高亮&#xff0c;有时候不想要单行高亮&#xff0c;想要带checkbox的单选&#xff0c;需要对多选进行改造 官方给的多选例子&#xff1a; <template><el-tableref"mult…...

IOC - 自定义IOC容器

1、定义接口与实现类 // Service接口 public interface Service {void execute(); } // Service的实现类 public class MyService implements Service {Overridepublic void execute() {System.out.println("MyService 执行了.");} }2、自定义ioc容器以绑定接口与实…...

力扣第647题 回文子串 c++ 动态规划 双指针 附Java代码 注释解释版

题目 647. 回文子串 中等 相关标签 字符串 动态规划 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串…...

【Go入门】struct类型

【Go入门】struct类型 struct Go语言中&#xff0c;也和C或者其他语言一样&#xff0c;我们可以声明新的类型&#xff0c;作为其它类型的属性或字段的容器。例如&#xff0c;我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性&#xff1a;姓名和年龄。这样…...

怎么改变容易紧张的性格?

容易紧张的性格是比较通俗的说法&#xff0c;在艾森克人格测试中&#xff0c;容易紧张的性格就属于神经症人格&#xff0c;神经质不是神-经-病&#xff0c;而是一种人格特征&#xff0c;这种特征包括&#xff1a;敏感&#xff0c;情绪不稳定&#xff0c;易焦虑和紧张。有兴趣的…...

合作共赢 共克时艰

​ 采访人&#xff1a;最近财政部11月6日通报隐性债务问责典型案例&#xff0c;这中间涉及湖北多所重要地市&#xff0c;形成新增隐性债务200多亿&#xff0c;您怎么看这件事&#xff1f; 辜渝傧&#xff1a;是的&#xff0c;无论是数字还是涉及的范围都可以明显感觉到“防范…...

VCSA7许可证过期问题

公司两台ESXI7虚拟化系统&#xff0c;使用VCSA7进行日常管理&#xff0c;在使用过程中一直清单中包含过期或即将过期的许可证。 查看许可证清单中&#xff0c;已经添加了正式授权的许可证&#xff0c;且已经分配给了ESXI主机&#xff0c;但是任然有到期提示。 最后查看试用许可…...

解决win11更新后,文件夹打不开的bug

更新win11系统了&#xff0c;给我更了个bug&#xff0c;找了好多解决方案&#xff0c;发现下面这个可以解决问题。 第一步 找到注册表 第二步 备份注册表 为了防止意外情况&#xff0c;备份注册表。如有意外问题&#xff0c;可以导入导出的注册表进行恢复。 第三步 删除指定…...

修复了数个Bug!

v2.0.1版本已经在 github release 了&#xff0c;欢迎大家体验使用&#xff0c;开源版是永久免费的。 ## 新增与优化的功能 新增(测试报告): 测试报告根据测试执行详情&#xff0c;进行查看 新增(用户设置): 用户权限为普通用户和管理员&#xff0c;普通用户根据设置的默认产品…...

设计模式之--原型模式(深浅拷贝)

原型模式 缘起 某天&#xff0c;小明的Leader找到小明:“小明啊&#xff0c;如果有个发简历的需求&#xff0c;就是有个简历的模板&#xff0c;然后打印很多份&#xff0c;要去一份一份展示出来&#xff0c;用编程怎么实现呢&#xff1f;” 小明一听&#xff0c;脑袋里就有了…...

Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Linux服务器为例:从零开始使用Linux训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇总第…...

矩阵理论--矩阵分解

矩阵理论–矩阵分解 矩阵的三角分解、谱分解、最大秩分解、奇异值分解的操作步骤&#xff0c;以及相关说明。 1、QR分解 &#xff08;1&#xff09;非奇异方阵 方阵&#xff08;非奇异&#xff09;&#xff1a;将方阵分解成酉矩阵左乘正线上三角&#xff0c;或者酉矩阵右乘…...

go语言相关bug

第一个bug itcastitcast:/home/jian/share/src/go-test/homeweb-client$ go mod tidy go: finding module for package github.com/micro/go-grpc go: found github.com/micro/go-grpc in github.com/micro/go-grpc v1.0.1 go: homeweb-client/handler importsgithub.com/micr…...

Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Spring Cloud OpenFeign&#xff1a;基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架&#xff0c;基于Feign并整合了Ribbon和…...

租用服务器带宽类型应用

服务器带宽类型多样&#xff0c;以满足不同行业的需求。本文将介绍香港常见的服务器带宽类型及其应用领域。 1. 共享带宽 共享带宽是指多个用户共同使用同一台服务器的带宽资源。这种带宽类型适用于小型企业或个人网站&#xff0c;因为其成本较低。由于多个用户共享带宽资源&…...

SOLIDWORKS实用技巧之焊件轮廓应用

1.焊件轮廓库官方下载入口 焊件轮廓可以自制&#xff0c;也可以从软件中在线下载获取直接使用&#xff0c;如图1&#xff0c;联网状态按ctrl左键点击下载&#xff0c;解压后获得库文件。 图1 图2 2.库放置的位置和配置 从SOLIDWORKS2014版起&#xff0c;软件焊件轮廓库支持可…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...