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/0
    print(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/1

def 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…。
在这里插入图片描述
进入页面后可看到已安装的包,选择+号可打开安装第三方包的界面。
在这里插入图片描述
界面可进行搜索、选择包的版本、以及使用国内链接下载安装。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之栈

目录 引言 栈的概念与结构 栈的实现 定义 初始化 销毁 压栈 检测栈是否为空 出栈 获取栈顶元素 检测栈中有效元素个数 元素访问 源代码 stack.h stack.c test.c 引言 数据结构之路经过链表后,就来到了栈(Stack) 栈的概念…

sass 封装媒体查询工具

背景 以往写媒体查询可能是这样的&#xff1a; .header {display: flex;width: 100%; }media (width > 320px) and (width < 480px) {.header {height: 50px;} }media (width > 480px) and (width < 768px) {.header {height: 60px;} }media (width > 768px) …

深入理解指针(一)

目录 内存和地址 内存 如何理解编址 指针变量和地址 取地址操作符&#xff08;&&#xff09; 指针变量和解引用操作符&#xff08;*&#xff09; 指针变量 如何拆解指针类型 解引用操作符 指针变量的大小 ​编辑 指针变量类型的意义 指针的解引用 指针-整…

2023.11.13-istio之故障注入流量拆分流量镜像熔断-oss

istio之故障注入&流量拆分&流量镜像&熔断 目录 文章目录 istio之故障注入&流量拆分&流量镜像&熔断目录本节实战1、故障注入注入 HTTP 延迟故障&#x1f6a9; 实战&#xff1a;注入 HTTP 延迟故障-2023.11.12(测试成功) 注入 HTTP abort 故障&#x1f6…

【案例】超声波测距系统设计

1.1 总体设计 1.1.1 概述 学习了明德扬至简设计法和明德扬设计规范&#xff0c;本人用FPGA设计了一个测距系统。该系统采用超声波进行测量距离再在数码管上显示。在本案例的设计过程中包括了超声波的驱动、三线式数码管显示等技术。经过逐步改进、调试等一系列工作后&#xf…

【计算机网络笔记】IP编址与有类IP地址

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

业务出海之服务器探秘

这几年随着国内互联网市场的逐渐饱和&#xff0c;越来越多的公司加入到出海的行列&#xff0c;很多领域都取得了很不错的成就。虽然出海可以获得更加广阔的市场&#xff0c;但也需要面对很多之前在国内可能没有重视的一些问题。集中在海外服务器的选择维度上就有很大的变化。例…

matlab GUI界面实现ZieglerNicholas调节PID参数

1、内容简介 略 11-可以交流、咨询、答疑 ZieglerNicholas、PID、GUI 2、内容说明 GUI界面实现ZieglerNicholas调节PID参数 通过ZieglerNicholas调节PID参数&#xff0c;设计了GUI 3、仿真分析 略 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/s/1yQ1yDfk-_…

ViewPager2和TabLayout协同使用

一、ViewPager2的基本用法 使用前先添加依赖&#xff1a; implementation androidx.appcompat:appcompat:1.4.0 // AndroidX AppCompatimplementation com.google.android.material:material:1.4.0 // Material Design Components1、制作Fragment 首先制作一个Fragment的xml布…

Linux socket编程(1):套接字、字节序和地址结构体

套接字(socket)是一种使用标准Unix文件描述符与其他程序进行通信的方式&#xff0c;它在实际的应用中都十分常用。所以从这一篇文章开始&#xff0c;我将详细介绍一下Linux环境下的socket的用法。本篇文章将介绍套接字、字节序和地址结构体的相关知识。 文章目录 1 什么是套接字…

使用Python分析时序数据集中的缺失数据

大家好&#xff0c;时间序列数据几乎每秒都会从多种来源收集&#xff0c;因此经常会出现一些数据质量问题&#xff0c;其中之一是缺失数据。 在序列数据的背景下&#xff0c;缺失信息可能由多种原因引起&#xff0c;包括采集系统的错误&#xff08;例如传感器故障&#xff09;…

Day28力扣打卡

打卡记录 给小朋友们分糖果 II&#xff08;容斥原理&#xff09; 链接 大佬的题解 def c2(n: int) -> int:return n * (n - 1) // 2 if n > 1 else 0class Solution:def distributeCandies(self, n: int, limit: int) -> int:return c2(n 2) - 3 * c2(n - limit …

【Opencv】cv::dnn::NMSBoxes()函数详解

本文通过原理和示例对cv::dnn::NMSBoxes&#xff08;&#xff09;进行解读&#xff0c;帮助大家理解和使用。 原理 cv::dnn::NMSBoxes是OpenCV库中的一个函数&#xff0c;用于在目标检测中处理多个预测框。在目标检测中&#xff0c;模型可能会为同一个物体生成多个预测框&…

Docker的本地镜像发布到阿里云或者私有库步骤

学习笔记来源Docker 本地镜像发布到阿里云 1、生成镜像&#xff08;使用commit命令&#xff09; 创建阿里云仓库镜像 阿里云开发者平台 https://promotion.aliyun.com/ntms/act/kubernetes.html 创建仓库镜像 选择控制台&#xff0c;进入容器镜像服务 选择个人实例 命名空…

阿里云国际站:密钥管理服务

文章目录 一、密钥管理服务的概念 二、密钥管理服务的功能 三、密钥管理服务的优势 一、密钥管理服务的概念 密钥管理服务KMS&#xff08;Key Management Service&#xff09;是您的一站式密钥管理和数据加密服务平台、一站式凭据安全管理平台&#xff0c;提供简单、可靠、…

【C++】【Opencv】minMaxLoc()函数详解和示例

minMaxLoc&#xff08;&#xff09;函数 是 OpenCV 库中的一个函数&#xff0c;用于找到一个多维数组中的最小值和最大值&#xff0c;以及它们的位置。这个函数对于处理图像和数组非常有用。本文通过参数和示例详解&#xff0c;帮助大家理解和使用该函数。 参数详解 函数原型…

【Opencv】图像融合addWeighted()函数示例和详解

本文通过原理和示例对addWeighted&#xff08;&#xff09;函数进行详解&#xff0c;&#xff0c;并通过改变融合系数展示多个结果&#xff0c;帮助大家理解和使用。 目录 函数原理示例权重&#xff08;0.5,0.5&#xff09;权重&#xff08;0.8,0.2&#xff09;权重&#xff08…

jupyter lab配置列表清单

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Leetcode_50:Pow(x,n)

题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000示例 2&#xff1a; 输入&#xff1a;x 2.10000, n 3 输出&#xff1a;9.26100示例 3&#xff1a; 输入&…

【Linux】第十三站:进程状态

文章目录 一、进程状态1.运行状态2.阻塞状态3.挂起状态 二、具体Linux中的进程状态1.Linux中的状态2.R状态3.S状态4.D状态5.T、t状态6.X状态(dead)7.Z状态&#xff08;zombie&#xff09;8.僵尸进程总结9.孤儿进程总结 一、进程状态 在我们一般的操作系统学科中&#xff0c;它…