Python学习 day05(异常、模块导入、包)

异常

  • 为什么要捕获异常

    • 当程序遇到了BUG,如果不对BUG进行手动捕获,那么整个程序就会因为一个BUG而停止运行,这在有些情况下是会造成很大的损失,但是如果我们进行了手动捕获,那么整个程序会继续运行
    • 捕获异常的作用在于:提前假设某处会出现异常,做好准备,如果出现异常,就执行相对应的代码
  • 捕获所有异常,写法一:
    在这里插入图片描述
    例如:
    在这里插入图片描述

  • 捕获所有异常,写法二:
    在这里插入图片描述

  • 捕获指定异常:
    在这里插入图片描述
    例如:
    在这里插入图片描述

  • 捕获多个异常:
    在这里插入图片描述
    例如:
    在这里插入图片描述

  • 异常else:
    在这里插入图片描述

  • 异常finally:
    在这里插入图片描述
    例如:
    在这里插入图片描述

try:
# 表示这段代码有可能出现异常,但我也不确定
except:
# 如果try内的代码出现了异常,那么我用except来进行捕获,并执行except内的代码
else:
# 如果try内的代码没有出现异常,那么我执行else内的代码 
finally:
# 无论try内的代码有没有异常,我都要执行finally内的代码# try和except是必须写且要成对出现的,而else和finally是可写可不写的
  • 异常的传递性
    • 基于函数之间的调用方式,异常会一层一层的向上传递,直到传递到我当前执行的最高的层级,如果在最高的层级没有调用try,程序就会直接抛出异常,如果调用try,就会尝试捕获
    • 因此,如果想要捕获异常,并不需要定位到出现异常的那句代码,只需要函数之间存在调用关系,我们在最顶层的调用处,依然可以运行try进行捕获,例如:
      在这里插入图片描述在这里插入图片描述

模块导入

  • 什么是模块:
    在这里插入图片描述
  • 模块的导入方式:
    在这里插入图片描述
    • [ ]表示可以省略
      在这里插入图片描述
    • 通过 . 可以使用模块内部的全部功能(类、函数、变量),且通过 . 来确定层级关系
    • 有时我们不需要使用模块内部的全部功能,就可以使用以下代码来导入模块中的某个具体方法,这种写法不需要 . ,可以直接写方法名
      在这里插入图片描述
    • 以下的导入方法,不需要 . 也可以使用模块中的全部方法
      在这里插入图片描述
    • 通过as 别名,可以更方便的使用模块
      请添加图片描述
    • 模块的导入一般写在代码文件的开头位置

自定义模块

  • 由于每个Python文件都可以作为一个模块,所以如果想要自定义模块,那么对应的文件名必须要符合标识符命名规则,例如:
    在这里插入图片描述
  • 注意事项:当导入多个模块的时候,且模块内有同名功能,当调用这个同名功能的时候,调用的是后面导入的模块的功能,如下:
    在这里插入图片描述
  • _ _ main _ _:
    • Python文件会内置一个_ _ name _ 的变量,当我们右键运行该文件时,这个文件是main文件,即它的 _ name _ 就等于 _ main _ ,但我们右键运行其他文件的时候,该文件不是main文件,即它的 _ name _ _ 不是_ _ main _ _,如下:
      在这里插入图片描述
  • _ _ all _ _:
    • _ _ all _ 是一个列表,如果一个模块文件中有 _ all _ _,当使用" from xxx import * "导入时,只能导入这个列表中的元素,如下:
      在这里插入图片描述
    • 但是,如果用" from xxx import xxx "导入时,可以导入_ _ all _ _内没有的元素

* 从物理上看,包相当于一个文件夹,里面包含一个_ _ init _ _ .py文件,还可以存放许多Python的模块(代码文件),通过包,逻辑上将一批模块归为一类,方便管理。如果去掉_ _ init _ _.py,那么这个包就真的变为一个文件夹。 

在这里插入图片描述
* 创建包后,包内会自动创建_ _ init _ _.py文件

  • 导入包
    在这里插入图片描述
    • 这种情况下,需要包名.模块名.功能名
    • 或者 from 包名 import 模块名
    • 这种情况下,不用包名,直接模块名.功能名就行
      在这里插入图片描述
    • 或者 from 包名.模块名 import 功能名
    • 这种情况下,不用包名.模块名,直接用功能名就行
      在这里插入图片描述

在这里插入图片描述
* _ _ all _ _ = [ ] ,[ ]里用“ ”或’ '都可以

pip安装第三方包

1. pip install 包名称 
# 国外官网安装
2. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
# 国内清华镜像网安装

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

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

相关文章

第三百七十二回

文章目录 1. 概念介绍2. 实现方法2.1 maskFilter2.2 shader 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"两种阴影效果"相关的内容,本章回中将介绍如何绘制阴影效果.闲话休提,让我们一起Talk Flutter吧。 1. 概…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者:深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构?一文解析 RoCE 与相关存储方案趋势》文章中,我们分析了如何利用支持 RoCE 技术的分布式存储,同步实现 IT 基础架构的信创转型与架构升级&a…

Soul App发布春节特产社交报告,全面解析当代年轻人的社交新趋势

近日,社交平台Soul App发布了《2024年春节“特产社交”趋势洞察报告》,深入剖析了年轻用户在春节期间的特产消费新习惯和社交新方式。这份报告基于平台内容和2395份调研样本,重点关注18-34岁用户群体,特别是00后用户,为我们呈现了一系列有趣的趋势。 年轻人的过年选择:看世界,却…

数据结构系列-通讯录项目

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” #pragma once#define NAME_MAX 100 #define GENDER_MAX 10 #define TEL_MAX 12 #define ADDR_MAX 100//通讯录数据类型 typedef struct PersonInfo {char name[NAME_MAX];int age;cha…

修改Qt生成iOS应用的原生底层,编译QtBase下的ios子模块

1.下载Qt源码 2.找到ios.pro子工程 3.使用QtCreaor12打开ios.pro工程 4.出现工程下只有一个.pro文件解决 复制修改好的toolchain.prf文件进行替换. 修改方法:

更改elementui的箭头图片以及位置

//更改箭头位置 .el-tree-node__content > .el-tree-node__expand-icon {position: absolute;right: 12px; }//更改箭头图片 .el-tree-node__expand-icon {transform: rotate(-90deg); } .el-tree-node__expand-icon.expanded {transform: rotate(0deg); } // 有子节点 且已…

协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议

发展历程-http组成-http是什么-相关的应用-相关的协议 参考来源: 极客时间-透视HTTP协议(作者:罗剑锋); 01-HTTP的发展历程 1989 年,任职于欧洲核子研究中心(CERN)的蒂姆伯纳斯 - 李(Tim Ber…

【C++】类和对象之常引用与运算符重载

个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 常引用3. 运算符重载 1. 前言 在之前的文章中提到了常引用,再来看运算符重载之前,先来看看常引用的使用。 2. 常引用 在使用引用的时候可…

TCP/IP-常用网络协议自定义结构体

1、TCP/IP模型: 2、TCP/IP- 各层级网络协议(从下往上): 1)数据链路层: ARP: 地址解析协议,用IP地址获取MAC地址的协议,通过ip的地址获取mac地 …

POST参数里加号+变成空格的问题处理

今天遇到个这样的问题,从前端传到后端的加密报文,里面包含了号,但在后端日志输出看出,变成空格。这个是由于经过RSA加密后引起的 解决办法: 1.前端转码:使用encodeURIComponent对参数进行转码 2.后端解码…

深入理解Lucene:开源全文搜索引擎的核心技术解析

欢迎关注微信公众号:一休哥助手。多种功能等待你的使用。1. 介绍 Lucene是什么? Lucene是一个开源的全文搜索引擎库,提供了强大的文本搜索和检索功能。它由Apache软件基金会维护和开发,采用Java语言编写,因其高性能、…

Docker(运维工具)—— 学习笔记

快速构建、运行、管理应用的工具 一、安装docker 参考Install Docker Engine on Ubuntu | Docker Docs 二、快速入门 1、镜像和容器 docker镜像可以做到忽略操作系统的差异,跨平台运行,忽略安装的差异 当我们利用Docker安装应用时,Dock…