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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析实战 | SVM算法——病例自动诊断分析

目录 一、数据分析及对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型应用及评价 一、数据分析及对象 CSV文件——“bc_data.csv” 数据集链接:https://download.csdn.net/download/m0_70452407/88…

阿里云国际站:全球加速GA

文章目录 一、前言 二、阿里云全球加速的概念 三、阿里云全球加速的功能优势 四、阿里云全球加速的原理 五、阿里云全球加速的应用场景 六、写在最后 一、前言 随着互联网的快速发展,网站速度已经成为了用户访问体验的一个重要指标。阿里云加速作为一种新的技…

黑马程序员微服务Docker实用篇

Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…

CCNA课程实验-13-PPPoE

目录 实验条件网络拓朴需求 配置实现基础配置模拟运营商ISP配置ISP的DNS配置出口路由器OR基础配置PC1基础配置 出口路由器OR配置PPPOE拨号创建NAT(PAT端口复用) PC1测试结果 实验条件 网络拓朴 需求 OR使用PPPoE的方式向ISP发送拨号的用户名和密码,用户名&#xf…

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

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

【数据结构】树与二叉树(十三):递归复制二叉树(算法CopyTree)

文章目录 5.2.1 二叉树二叉树性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点,其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

vue,react虚拟dom

Virtual DOM 前言 在传统的Web开发中,直接操作真实的DOM通常是一个昂贵且低效的操作。为了解决这个问题,Virtual DOM(虚拟DOM)被引入为一个中间层,允许开发者在内存中进行操作,从而避免频繁且不必要的真实D…

深度学习的集体智慧:最新发展综述

一、说明 我们调查了来自复杂系统的想法,如群体智能、自组织和紧急行为,这些想法在机器学习中越来越受欢迎。人工神经网络正在影响我们的日常生活,从执行预测性任务(如推荐、面部识别和对象分类)到生成任务&#xff08…

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中,不同环境的作用如下: 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中…

【Spring Boot 源码学习】初识 SpringApplication

Spring Boot 源码学习系列 初识 SpringApplication 引言往期内容主要内容1. Spring Boot 应用程序的启动2. SpringApplication 的实例化2.1 构造方法参数2.2 Web 应用类型推断2.3 加载 BootstrapRegistryInitializer2.4 加载 ApplicationContextInitializer2.5 加载 Applicatio…

Codeforces Round 788 (Div. 2) E. Hemose on the Tree(树上构造)

题目 t(t<5e4)组样例&#xff0c;每次给定一个数p&#xff0c; 表示一棵节点数为的树&#xff0c; 以下n-1条边&#xff0c;读入树边 对于n个点和n-1条边&#xff0c;每个点需要赋权&#xff0c;每条边需要赋权&#xff0c; 权值需要恰好构成[1,2n-1]的排列 并且当你赋…

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

在k8s上安装apisix全家&#xff0c;通过helm安装很简单&#xff0c;但是会遇到一些问题。 安装 首先登录阿里云控制台&#xff0c;在ACK集群详情页&#xff0c;进入CloudShell&#xff0c;执行下面helm命令安装apisix、apisix-ectd、apisix-dashboard和apisix-ingress-contro…

汽车ECU的虚拟化技术初探(一)

目录 1.为什么要提汽车ECU的虚拟化&#xff1f; 2.虚拟化技术分类 2.1 硬件虚拟化 2.2 操作系统虚拟化 问题引入&#xff1a; Hypervisor是如何来管理和隔离硬件资源&#xff0c;保证各个不同功能的应用程序的资源使用安全和资源调度&#xff1f;没有MMU就做不了虚拟化&am…

扭矩传感器信号模拟地、数据地与电源地

在电子电路中&#xff0c;电源地、信号地、数字地和模拟地都是不同的地&#xff08;ground&#xff09;节点&#xff0c;它们在电路中有不同的作用。 电源地&#xff08;Power Ground&#xff09;是指用于连接电源电源回路的地节点。在大多数电子设备中&#xff0c;电源地通常是…

Git Commit 之道:规范化 Commit Message 写作指南

1 commit message 规范 commit message格式都包括三部分&#xff1a;Header&#xff0c;Body和Footer <type>(<scope>): <subject><body><footer>Header是必需的&#xff0c;Body和Footer则可以省略 1.1 Header Type&#xff08;必需&#xf…

高级项目管理总结

目录 一、背景介绍二、思路&方案三、过程1.升维思考2.结构化3.心理、知识阶段检验4.微观 四、总结 一、背景介绍 天性对学习对考试充满敌意的我&#xff0c;转变为依赖学习谋生&#xff0c;再到后来书中自有黄金屋&#xff0c;到现在学习对我而言就如同一日三餐&#xff1…

Three.js——基于原生WebGL封装运行的三维引擎

文章目录 前言一、什么是WebGL&#xff1f;二、Three.js 特性 前言 Three.js中文官网 Three.js是基于原生WebGL封装运行的三维引擎&#xff0c;在所有WebGL引擎中&#xff0c;Three.js是国内文资料最多、使用最广泛的三维引擎。既然Threejs是一款WebGL三维引擎&#xff0c;那么…

【操作系统】考研真题攻克与重点知识点剖析 - 第 3 篇:内存管理

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法&#xff0c;JPA默认提供的CrudRepository\JpaRepository提供的方法比较少&#xff0c;一般我们会手写一些方法&#xff0c;这里我们选择通过JPA Buddy快速生成&#xff0c;之前文章中讲到了JPA Buddy原本是IDEA收费插…

Spark Job优化

1 Map端优化 1.1 Map端聚合 map-side预聚合&#xff0c;就是在每个节点本地对相同的key进行一次聚合操作&#xff0c;类似于MapReduce中的本地combiner。map-side预聚合之后&#xff0c;每个节点本地就只会有一条相同的key&#xff0c;因为多条相同的key都被聚合起来了。其他节…