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

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...