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

Python(白银时代)——模块、包、异常

异常

概念

  • 程序运行时,如果Python 解释器遇到了错误,会停止程序运行,并且提示错误信息,这就是异常

  • 程序停止执行并提示错误信息的动作,称为 抛出异常

异常捕获

  • try:  里面的代码,不确定是否能够正常执行.

  • except:  当try里面的代码出现错误时,程序会跳到except 里执行

  • 对某些代码的执行不确定是否正确,可以使用 try: except 来捕获并处理异常

语法

try:尝试执行代码except:出现错误的处理

错误类型

  • 在Python中,程序执行时可能会遇到 不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这时就需要捕获异常类型了

  • 当 Python解释器 抛出异常时,最后一行错误信息的第一个单词,就是错误类型

  • 如果希望 无论出现任何错误,都不会因为 Python 解释器 抛出异常而被终止,可以用 except Exception 

语法

try:尝试执行的代码
except 错误类型1:针对错误类型1,对应的处理代码
except (错误类型2,错误类型3):针对错误类型2和3,对应的处理代码
except Exception as e:未知错误处理

示例

try:# 除零异常 案例# num=10/0# 其它异常ss=int("df")except ZeroDivisionError:print("这是除0异常")
except Exception as e:print("未知异常:",e)
 

输出结果

异常的传递

  • 当函数/方法 执行出现异常,会将异常传递给 函数/方法 的调用一方

  • 如果 传递到主程序 ,仍然 没有异常处理,程序才会被终止

主动抛出异常

  • 在开发中,除了 代码执行出错 Python 解释器 抛出异常之外,还可以根据 应用程序特有的业务需求,主动抛出异常

  • Python 中提供了一个 Exception 异常类

  • 如果想要主动抛出异常

    • 创建一个 Exception 的对象

    • 使用 raise 关键字抛出异常

示例

def input_pwd(pwdd):""" 校验密码,密码长度只能是6位 """if len(pwdd)!=6:ex=Exception("主动抛出异常:密码长度不符合规定!!")raise exprint("你输入的密码是:%s" %pwdd)try:input_pwd("2332323232")
except Exception as e:print(e)
 

输出结果

模块

概念

  • 模块是 Python 程序架构的一个核心概念

  • 每一个以扩展名 py 结尾的 Ptyon 源代码文件都是一个 模块

  • 模块名 同样也是一个标识符,需要符合标识符的命名规则

  • 在模块中定义的 全局变量、函数、类 都是提供给外面直接使用的工具

  • 模块 就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块

import 导入示例

# 方式一
import 模块名1,模块名2# 方式二
import 模块名1
import 模块名2# 方式三,导入后使用别名
import 模块1 as 模块别名
 

导入后,通过模块名. 使用 模块提供的工具(全局变量、函数、类)

from... import 导入

  • 如果希望 从某一个模块 中,导入 部分 工具就可以使用 from ... import 的方式

  • import 模块名 是一次性 把模块中 所有工具全部导入,并且通过 模块名/别名 访问

  • 导入后不需要通过 模块名. ,可以直接使用 模块提供的工具 ——全局变量、函数、类

  • 如果 两个模块,存在同名的函数,后导入的模块会覆盖先导入的模块

  • 一旦发生冲突,可以使用 as  关键字给其中一个工具起一个别名

# 从模块中导入某个工具
form 模块名1 import 工具名# 导入所有工具(不推荐使用,出现同名工具不好查)
from 模块名 import *

示例

import random as rd
from tqdm import tqdmnum=rd.randint(0,10)
print("生成的随机数是:%d" %num)# 生成进度条
for i in tqdm(range(10)):pass
 

输出结果

原则

  • 每一个文件都应该是可以被导入的

  • 一个独立的 Python 文件就是一个 模块

  • 在导入文件时,文件中 所有没有任何缩进的代码 都会被执行一遍

__name__ 属性

  • __name__ 可以做到,测试模块的代码 只在测试情况下运行,而在 被导入时不会执行

  • __name__ 是 Python 的一个内置属性,记录着一个字符串

  • 如果被其他文件导入  __name__ 就是模块名

  • 如果 是当前执行的程序 __name__ 是 __main__

示例 

cal.py 文件内容

name ="张三"def add(a,b):return a+bdef reduce(a,b):return a-bprint("计算结果是:%d" %add(1,2))

hello3.py 文件内容

import calnum=cal.add(2,2)
print("num的值:%d" %num)

执行 hello3.py 的结果

如果不想执行 cal.py 模块中打印的内容,可以加 if __name__ =="__main__"

name ="张三"def add(a,b):return a+bdef reduce(a,b):return a-bif __name__ == "__main__":print("计算结果是:%d" %add(1,2))

修改完 cal.py 后,再次执行 hello3.py 文件

概念

  • 包 是一个包含多个模块的 特殊目录 

  • 目录下有个特殊文件 __init__.py

  • 包名的命名方式 和变量名一致,小写字母 +_

  • 优点

    • 使用 import 包名,可以一次性导入包中所有模块

__init__.py 文件

  • 要在外界使用 包 中的模块,需要在 __init__.py 中指定 对外界提供的模块列表

# 从当前目录 导入模块列表
from . import test1
from . import test2

示例

制作模块

发布模块

  • 如果希望自己的模块,分享给其他人,可以按照以下步骤操作

    • 创建 setup.py

      from distutils.core import setup
      setup(name="ani",#包名version="1.0", #版本description="say hello模块", # 描述信息long_description="完成的 say hello 模块", # 完事的描述信息author="zq", # 作者author_email="xxx@qq.com", # 作者邮箱url="www.xxx.com", # 主页py_modules=["ani.test1","ani.test2"] # 包中所有要分享的模块
      )

    • 构建模块

      • 命名行输入:  python  setup.py  build

    • 生成发布的压缩包

      • 命名行输入:  python  setup.py  sdist         

安装模块

  • 解压 ani-1.0.tar.gz 压缩包

  • 进入解压后的目录,命令行输入:python setup.py install

卸载模块

  • 直接从安装目录下,把安装的模块 目录 删除就可以了

pip 安装第三方模块

  • pip 是一个现代的,通用的 Python 包管理工具

  • 提供了对 Python 包的查找、下载、安装、卸载等功能

  • 安装与制裁命令如下

    • pip install xxx

    • pip uninstall xxx

示例

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注! 

相关文章:

Python(白银时代)——模块、包、异常

异常 概念 程序运行时,如果Python 解释器遇到了错误,会停止程序运行,并且提示错误信息,这就是异常 程序停止执行并提示错误信息的动作,称为 抛出异常 异常捕获 try: 里面的代码,不确定是否能够正常执行. …...

小程序和Vue写法的区别

小程序和Vue写法的区别主要有以下几点: 语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需…...

如何实现分布式锁

一、锁的作用 锁是为了解决多线程情况下,对于共享资源的访问安全问题。 但是当系统是分布式的时候,本地锁已经没法锁住所需要的资源,因为本地获取了锁,其他系统无法得知本地锁的情况。 分布式锁,是独立于系统的第一方…...

使用VS2019连接Microsoft SQL Server Compact 4.0数据库

简介 SQL Server Compact Edition是微软推出的一个适用于嵌入到移动应用的精简数据库产品,Windows Mobile开发人员能够使用SQL Server CE开发出将数据管理能力延展到Window Mobile移动设备上的应用程序。虽然SQL Server CE占用的磁盘空间只有3到5兆左右&#xff0c…...

Vue2 和 Vue3 的对比

Vue2 vs Vue3 Vue 是一款流行的 JavaScript 框架,用于构建交互式 Web 界面。Vue2 和 Vue3 是 Vue.js 的两个版本。Vue3 是 Vue.js 的最新版本,于 2020 年 9 月正式发布。Vue3 有许多改进和新功能,下面我们将对 Vue2 和 Vue3 进行比较。 性能…...

[数据结构]二叉树的链式存储结构

目录 二叉树的链式存储结构:: 1.创建一颗二叉树 2.二叉搜索树简介 3.前序、中序以及后序遍历 4.层序遍历 5.求一棵树的节点个数代码实现 6.求一棵树的高度代码实现 7.求叶子节点个数代码实现 8.求第K层节点个数代码实现 9.二叉树查找值为x的节点 二叉树…...

黑马程序员 Redis 踩坑及解决

文章目录实战篇p30 短信登录-隐藏用户敏感信息p50 优惠券秒杀-添加优惠券p69 秒杀优化-异步秒杀思路p81 达人探店-点赞排行榜p87 好友关注-实现滚动分页查询问题 1问题 2p90 附近商铺-实现附近商户功能实战篇 p30 短信登录-隐藏用户敏感信息 问题描述:登录后会跳转…...

Matlab实现粒子群算法

粒子群算法(Particle Swarm Optimization,PSO)是一种群体智能算法,通过模拟自然界中鸟群、鱼群等生物群体的行为,来解决优化问题。 在PSO算法中,每个个体被称为粒子,每个粒子的位置表示解空间中…...

tailwindcss 写原生html

需要注意:html文件中引入的是output.css input.css写那三行预留的就可以了打包的时候只要打包html output.css img文件夹句ok,其他都不用原理是运行时生产output.css文件,直接【注意!注意!注意!class"…...

Java开发一年不到,来面试居然敢开口要20K,面完连8K都不想给~

前言 我的好朋友兼大学同学老伍家庭经济情况不错,毕业之后没两年自己存了点钱加上家里的支持,自己在杭州开了一家网络公司。由于公司不是很大所以公司大部分的开发人员都是自己面试的,近期公司发展的不错,打算扩招也面试了不少人…...

LeetCode题解 20(17,79) 电话号码的字母组合,单词搜索<回溯>

文章目录电话号码的字母组合(17)代码解答单词搜索(79)代码解答电话号码的字母组合(17) 思路: 根据题意我们必须根据数字获取对应的字符数组,因此我们先定义1个字符数组表示这个电话表 private String[] letters {"","","abc","…...

路径之谜 蓝桥杯 89

题目描述小明冒充 X 星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 nn 个方格。如下图所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不…...

Mysql数据库如何调优

MYSQL数据库调优 索引 1、对于常用的查询字段加索引,但如果常用字段只有几个常量值就不需要加索引,或者使用索引会失效的情况; 2、索引失效的情况: ​ 1、索引列使用函数,计算(加减乘除等) …...

CAN(FD)记录仪在新能源汽车整车控制器(VCU)、电池管理系统(BMS)、电机控制器(MCU)、发动机ECU中的应用,免去出差烦恼

今天介绍CAN(FD)记录仪在新能源汽车整车控制器(VCU)、电池管理系统(BMS)、电机控制器(MCU)、发动机ECU中的应用 第一步:新能源汽车整车控制器(VCU)先供上电&#xff0c…...

【设计模式】23种设计模式之七大原则

【设计模式】23种设计模式之七大原则什么是设计模式的原则1、单一职责原则基本介绍案例分析注意事项2、接口隔离原则基本介绍案例分析代码实现3、依赖倒转原则基本介绍案例分析依赖传递的三种方式注意事项4、里氏替换原则关于继承性的思考和说明基本介绍案例分析5、开闭原则ocp…...

python - 文件操作

1. 概念 计算机内存通常分为两种类型:主存储器和辅助存储器。 主存储器是计算机中最重要的存储器类型之一。它是计算机中用于存储正在运行的程序和数据的存储器。主存储器通常是易失性的,这意味着当计算机关闭时,其中存储的数据将被删除。主存…...

docker打包golang应用

一、错误的打包方式在本地环境编译,然后将可执行程序放入 alpine(docker.io/alpine:latest)准备web程序package mainimport ("fmt""net/http" )func main() {server : &http.Server{Addr: ":8888",}http.HandleFunc("/"…...

redis 内容总结

目录redis 内容列举Redis和Memcached比较Redis简介1、Redis 数据结构2、Redis的持久化机制3、Redis 内容管理(淘汰策略/删除策略)4、Redis 事务5、Redis 缓存三大问题6、Redis 集群7、Redis 应用redis 内容列举 官网:https://redis.io/ 中文…...

贪心算法(一)

一、概念 贪心算法的核心思想是,在处理一个大问题时,划分为多个局部并在每个局部选择最优解,并且认为在每个局部选择最优解,那么最后全局的问题得到的就是最优解。 贪心算法可以解决一些问题,但是不适用于所有问题&a…...

【栈和队列OJ题】有效的括号用队列实现栈用栈实现队列设计循环队列

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯长路漫漫浩浩,万事皆有期待 文章目录OJ题1.有效的括号1.1…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...