Python基础入门 --- 9.异常、模块

news2025/2/3 0:51:19

文章目录

    • 第九章:
      • 9.异常
        • 9.1 异常的捕获
          • 9.1.1 捕获指定异常
          • 9.1.2 捕获多个异常
          • 9.1.3 捕获全部异常
          • 9.1.4 异常else
          • 9.1.5 异常的finally
        • 9.2 异常的传递性
        • 9.3 Python模块
          • 9.3.1 模块的导入
            • import模块名
            • from 模块名 import 功能名
            • from 模块名 import *
            • as定义别名
          • 9.3.2 自定义模块
            • 测试模块
            • __all__变量
        • 9.4 Python包
          • 9.4.1 自定义包
          • 9.4.2 安装第三方包
            • pip - 安装
            • Pycharm - 安装

第九章:

9.异常

概念:检测到一个错误时,解释器就无法继续执行下去,出现了一些错误提示,这就是’异常‘,也就是常说的’BUG‘。

f = open("test.txt", "r", encoding="ETF-8")

在这里插入图片描述

9.1 异常的捕获

作用:在力所能及的范围内,对可能出现的bug,进行提前准备、提前处理。

通常当程序遇到BUG,一般有两种情况:

  • 整个程序因为BUG而停止运行

  • 对BUG进行提醒,程序继续执行

基本语法

try:
   可能发生的错误代码
except:
    如果出现错误所执行的代码
try:
    f = open("test.txt", "r", encoding="UTF-8")
except:
    f = open("test.txt", "w", encoding="UTF-8")
9.1.1 捕获指定异常

基本语法

try:
    print(age)
except:
    print("age变量名称未定义,")

注意

  • 如果执行代码的异常类型与要捕获的异常类型不同,则无法捕获异常

  • 一般try下方只放一行的尝试执行代码

try:
    print(age)
except NameError as e:
    print("出现了变量未定义的异常")
    print(e)常")

1

9.1.2 捕获多个异常
try:
    # print(age)
    1 / 0
except (NameError,ZeroDivisionError ):
    print("出现了变量未定义的异常或除0的异常")
9.1.3 捕获全部异常
try:
    f = open("Python.txt", "r", encoding="UTF=8")
except Exception as e:
    print("出现异常")
9.1.4 异常else

else:如果没有异常所要执行的代码。

try:
    f = open("Python.txt", "w", encoding="UTF=8")
except Exception as e:
    print("出现异常")
else:
    print("没有出现异常")
9.1.5 异常的finally

finally:无论是否异常都要执行的代码。

try:
    f = open("Python.txt", "r", encoding="UTF=8")
except Exception as e:
    print("出现异常")
else:
    print("没有出现异常")
finally:
    f.close()
9.2 异常的传递性
def func01(): # 异常在func01中没有被捕获
    print("func01 - start!")
    num = 1 / 0
    print("func01 - end!")

def func02(): # 异常在func02中没有被捕获
    print("func02 - start!")
    func01()
    print("func02 - end!")

def main(): # 异常再main函数中捕获
    try:
        func02()
    except Exception as e:
        print(e)

注意:所有函数都没有捕获异常时,程序会报错。

9.3 Python模块

模块概念:一个Python文件(.py),模块能定义函数,类和变量,也可包含可执行代码。

模块作用:python中有很多各种不同的模块,每一行都可以帮助我们可以快速实现某些功能。

9.3.1 模块的导入

语法:[from 模板名] import [模板 | 类 | 变量 | 函数 | *] [as 别名]

常用的组合形式

  • import 模块名
  • from 模块名 import 类、变量、方法等
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
import模块名

语法

import 模块名
import 模块1, 模块2

模块名.功能名() 
import time
print("start")
time.sleep(5)
print("end")
from 模块名 import 功能名

语法

from 模块名 import 功能名

功能名()
from time import sleep
print("start")
sleep(5)
print("end")
from 模块名 import *

语法

from 模块名 import * 


功能名()
from time import *
print("start")
sleep(5)
print("end")
as定义别名

语法

import 模块名 as 别名 # 模块定义别名
from 模块名 import 功能名 as 别名 # 功能定义别名
# 模块定义别名
import time as tt
print("start")
tt.sleep(5)
print("end")
# 功能定义别名
from time import sleep as sl
print("start")
sl(5)
print("end")
9.3.2 自定义模块

在这里插入图片描述

在这里插入图片描述

from my_module1 import test
from my_module2 import test # 不同模块的同名时,调用的是后面导入的模块功能
test(10, 20)
测试模块

在这里插入图片描述

此时,无论是当前文件,还是其他导入该模板的文件,在运行的时候都会自动执行test函数。

解决方法:在当前文件中使用___main____变量即可。

def test(a, b):
    print(a+b)

if __name__=='_main_':
_':
    test(10, 10)
__all__变量

当使用from xx import *导入时,只能导入该列表的元素

在这里插入图片描述

在这里插入图片描述

9.4 Python包

概念:一个文件夹,该文件夹包含了____init____.py文件,该文件用于包含多个模块文件。

作用:包可以帮助我们管理模块文件,包含多个模块,包的本质依旧是模块。

在这里插入图片描述

9.4.1 自定义包

步骤

  1. 新建包

  2. 新建包内模块

  3. 模块代码

在这里插入图片描述

在这里插入图片描述

在_____init_____.py文件中添加__all__=[‘’],可控制导入的模块列表______

from 包名 import *
模块名.目标
__all__ = ["my_module1"]
9.4.2 安装第三方包
pip - 安装

语法:pip install 包名称

在这里插入图片描述

也可连接国内的网站进行包的安装:

语法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

该链接为清华大学提供的一个网站,可供pip程序下载第三方包。

Pycharm - 安装

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

C++多线程:创建多个线程与数据共享安全问题(四)

1、创建多个线程 多线程的调度由操作系统负责&#xff0c;线程执行的先后没有严格的顺序完全看操作系统和CPU的心情。 #include <iostream> #include <vector> #include <thread>void thread_print(int num) {std::cout << "线程编号 " &…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊&#xff0c;并已陆续完成EI Compendex数据库收录&#xff0c;详情如下&#xff1a; EIECT 2023——IEEE出版&#xff0c;并完成EI收录 会议信息&#xff1a; 第三届电子信息工程与计算机技术国际学术会议&…

使用hexo框架快速在github上搭建静态博客

今天来说一下使用hexo框架搭建静态博客&#xff0c;玩玩还不错。 我的操作系统 文章目录 一、部署到本地二、新建博客三、更换主题四、部署到github五、其他 一、部署到本地 首先下载好nodejs和git工具&#xff0c;建议直接去清华镜像源下载 node.js git 这中间环境变量的配置…

vue2处理跨域问题

vue中访问springboot中的RestController中的服务 &#xff08;vue.config.js不生效-CSDN博客&#xff09; 1、创建项目 使用vue init webpack my_frontend 创建vue项目 在HelloWorld.vue文件中添加内容&#xff1a; HelloWorld.vue 文件内容&#xff1a; <template>&…

搜索与图论——bellman—ford算法、spfa算法求最短路

bellman-ford算法 时间复杂度O(nm) 在一般情况下&#xff0c;spfa算法都优于bf算法&#xff0c;但遇到最短路的边数有限制的题时&#xff0c;只能用bf算法 bf算法和dijkstra很像 #include<iostream> #include<queue> #include<cstring> #include<algori…

Tomcat一闪而过

步骤&#xff1a; 1.将startup.bat拖入命令行执行得&#xff1a;jre_home地址不正确&#xff0c;参考 2.环境变量中删除jre 3.再次执行&#xff0c;得&#xff1a;catalina_home未正确配置&#xff0c;配置参考 最后&#xff1a;发现jdk和tomcat版本不兼容&#xff0c;换成tom…

数字图像处理——直方图的均衡化

1.方法简介&#xff1a; 直方图均衡化通常用来增加许多图像的全局对比度&#xff0c;尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法&#xff0c;亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度&#xff0c;直方图均衡化通…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结&#xff1a; 这项研究通过低频1/f噪声测量方法&#xff0c;探究了在关态&#xff08;OFF-state&#xff09;应力作用下&#xff0c;AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;中由应力引起的损伤的定位。研究中结合了电致发光&#xff08;EL&#xf…

unbuntu mysql8.0新建用户及开启远程连接

MySQL更新到8.0以上版本后&#xff0c;在创建连接远程的用户的时候和之前5.x的版本有了很大的不同&#xff0c;不能使用原来同时创建用户和授权的命令。 以下是记录的MySQL8.0创建用户并授权的命令&#xff1a; 查看用户表&#xff1a; user mysql; select host,user,authen…

如何通过针对iOS的动态分析技术绕过反调试机制

在这篇文章中&#xff0c;我们将跟大家介绍和分析一种针对iOS的新型安全研究技术&#xff0c;该技术能够让iOS应用程序的调试过程更加轻松&#xff0c;并解决那些可能会延缓我们步伐的阻碍。 如果你要对一个采用了反调试技术的iOS应用程序或二进制文件进行调试的话&#xff0c;…

2024年腾讯云最新优惠活动整理汇总

随着云计算技术的不断发展&#xff0c;越来越多的企业和个人开始选择将业务迁移到云端。腾讯云作为国内领先的云计算服务提供商&#xff0c;不仅提供了稳定、安全的云服务&#xff0c;还通过一系列的优惠活动&#xff0c;为用户带来了实实在在的福利。2024年&#xff0c;腾讯云…

链表合集(easy难度)

合并两个有序链表 双指针法 由于list1和list2都是递增的&#xff0c;可以想到用双指针法。假如当前list1这个指针指向的节点被收入完成&#xff0c;那就list1&#xff1b;如果是list2被收入&#xff0c;那就list2。 具体是list1和节点被收入还是list2的节点被收入&#xff…

接口自动化框架搭建(八):pytest+allure+jenkins接入

1&#xff0c;安装allure插件 2&#xff0c;创建jenkins项目 怎么确定路径&#xff0c;可以查看工作空间&#xff0c;jenkins默认根目录就是工作空间 配置执行用例的命令&#xff0c;可以现在pycharm上试一下&#xff0c;然后在jenkins中配置&#xff1a; 把启动java服务的代…

Redis 和 Mysql 数据库数据如何保持一致性

一、操作 我们在实际项目中经常会使用到Redis缓存用来缓解数据库压力&#xff0c;但是当更新数据库时&#xff0c;如何保证缓存及数据库一致性&#xff0c;一般我们采用延时双删策略。 目前系统中常用的做法是一个查询接口&#xff0c;先查询Redis&#xff0c;如果不存在则查…

RockChip Android8.1 Settings

一:Settings一级菜单 1、AndroidManifest.xml 每个APP对应都有一个AndroidManifest.xml,从该文件入手分析最为合适。 packages/apps/Settings/AndroidManifest.xml 根据<category android:name="android.intent.category.LAUNCHER" />可找到当前当前APP a…

教程分享 | GitHub Copilot+ESP开发实战-SPI

准备工作 1. ESP32-C3-DevKitC-1 开发板一块 &#xff1b; 2.SPI转uart小板一块&#xff1b; 3.杜邦线4根、USB线 ; 教程分享 | GitHub CopilotESP开发实战-SPI 一、向Copilot提问 需要实现的功能&#xff1a; 1、ESP32-C3用C语言实现SPI初始化&#xff1b; 2、MOSI为7&a…

帆软报表踩坑日记

最近公司项目要是使用报表&#xff0c;公司使用的是帆软这个国产软件&#xff0c;自己也是学习使用&#xff0c;在使用的过程中记一下问题以及解决方式 公司使用的是帆软8这个版本&#xff0c;比较老了。 首先是表格中的扩展&#xff0c;就是当我们根据数据库查询数据然后放到表…

实时渲染是什么意思?实时渲染和离线渲染的区别

一、实时渲染是什么意思&#xff1f; 实时渲染是指在计算机程序运行时即时地生成图像和动画的过程&#xff0c;这种渲染技术通常用于网络游戏、虚拟现实和增强现实等需要实时交互的XR应用中。实时渲染需要在每秒内渲染数百万到数十亿个像素&#xff0c;以呈现出平滑的动画和交…

以XX医院为例的医疗建筑能效管理系统【建筑能耗 供电可靠 】

一、行业背景 二、行业特点 1.供电可靠性要求高&#xff1a;医院配电系统复杂&#xff0c;门诊、急救、手术室、ICU/CCU、血液透析等场合特一级和一级负荷比较多&#xff0c;一旦发生故障会造成严重影响&#xff0c;对配电可靠性要求极高。 2.能耗水平高&#xff1a;医院能耗…

vue3+threejs新手从零开发卡牌游戏(二十):添加卡牌被破坏进入墓地逻辑

在game目录下新建graveyard文件夹存放墓地相关代码&#xff1a; game/graveyard/p1.vue&#xff0c;这里主要设置了墓地group的位置&#xff1a; <template><div></div> </template><script setup lang"ts"> import { reactive, ref,…