当前位置: 首页 > 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…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...