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

如何让Windows任务栏变透明:TranslucentTB终极美化指南

如何让Windows任务栏变透明:TranslucentTB终极美化指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想让你的Windows桌面焕…...

Hotkey Detective:Windows热键冲突终极解决方案与实战指南

Hotkey Detective:Windows热键冲突终极解决方案与实战指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

OpenClaw Mattermost插件:为团队协作平台注入AI智能的轻量集成方案

1. 项目概述:为团队协作平台注入AI灵魂如果你所在的技术团队正在使用 Mattermost 这类自托管、注重数据隐私的团队协作工具,同时又希望引入一个能处理工单、回答疑问、甚至自动执行任务的智能助手,那么你很可能已经厌倦了那些需要复杂 API 调…...

3个步骤掌握Sketch MeaXure:设计师与开发者的终极协作桥梁

3个步骤掌握Sketch MeaXure:设计师与开发者的终极协作桥梁 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 你是否厌倦了在Sketch中手动测量每个元素、反复截图标注的日子?Sketch MeaXure正是为解…...

告别网盘限速!3步搞定百度网盘高速下载秘籍

告别网盘限速!3步搞定百度网盘高速下载秘籍 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗?每次看到那几十KB/s的速…...

【c++面向对象编程】第2篇:类与对象(一):定义第一个类——成员变量与成员函数

目录 一、从一个日常需求开始 二、定义你的第一个类 三、访问修饰符:public、private、protected 举个例子,看看区别: 四、成员变量怎么声明? 五、成员函数:两种实现方式 方式一:类内实现&#xff08…...

大跨度异型电动挡烟垂壁技术研发与工程应用研究

当前商业综合体、交通枢纽、会展场馆、大型厂房普遍采用大跨度、异形挑空设计,按消防规范需设置挡烟垂壁划分防烟分区,控制烟气蔓延。常规直线型、小跨度挡烟垂壁存在易变形、异型适配差、漏烟、运行不稳、验收难等问题,大跨度异型电动挡烟垂…...

Go语言CLI工具服务化:基于JSON-RPC的进程间通信与自动化集成

1. 项目概述与核心价值最近在折腾一些自动化流程和跨平台脚本时,遇到了一个挺有意思的需求:如何让一个用Go语言写的、功能强大的命令行工具,能够被其他语言(比如Python、Node.js)或者更上层的应用(比如Web界…...

多模态大语言模型如何优化多机器人系统协同

1. 多模态大语言模型驱动的多机器人系统架构设计多模态大语言模型(MLLM)正在彻底改变多机器人系统的协同工作方式。这种新型架构通过将自然语言理解、多模态感知和分布式决策能力深度融合,使机器人团队能够像人类工作组一样理解复杂指令并自主…...

如何快速掌握FunClip:阿里开源AI视频剪辑的完整指南

如何快速掌握FunClip:阿里开源AI视频剪辑的完整指南 【免费下载链接】FunClip Open-source, accurate and easy-to-use video speech recognition & clipping tool, LLM based AI clipping intergrated. 项目地址: https://gitcode.com/GitHub_Trending/fu/Fu…...