0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python-模块、包、异常

汽车电子技术 来源:程序猿知秋 作者: 程序猿知秋 2023-02-16 15:40 次阅读

异常

概念

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

异常捕获

  • **try: ** 里面的代码,不确定是否能够正常执行.
  • **except: ** 当try里面的代码出现错误时,程序会跳到except 里执行
  • 对某些代码的执行不确定是否正确,可以使用 try: except 来捕获并处理异常

语法

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

错误类型

  • 在Python中,程序执行时可能会遇到 不同类型的异常 ,并且需要针对不同类型的异常,做出不同的响应,这时就需要捕获异常类型了
  • 当 Python解释器 抛出异常时 ,最后一行错误信息的第一个单词,就是错误类型
  • 如果希望 无论出现任何错误 ,都不会因为 Python 解释器 抛出异常而被终止**,可以用 except Exception **

语法

try:
  尝试执行的代码
except 错误类型1:
  针对错误类型1,对应的处理代码
except (错误类型2,错误类型3):
  针对错误类型23,对应的处理代码
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 ex


  print("你输入的密码是:%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 tqdm


num=rd.randint(0,10)
print("生成的随机数是:%d" %num)


# 生成进度条
for i in tqdm(range(10)):
  pass

输出结果

图片

原则

  • 每一个文件都应该是可以被导入的
  • 一个独立的 Python 文件就是一个** 模块**
  • 在导入文件时,文件中** 所有没有任何缩进的代码** 都会被执行一遍

**name **属性

  • name 可以做到,测试模块的代码 只在测试情况下运行,而在 被导入时不会执行
  • **name **是 Python 的一个内置属性,记录着一个字符串
  • 如果被其他文件导入 name 就是模块名
  • 如果 是当前执行的程序 namemain

**示例 **

cal.py 文件内容

name ="张三"


def add(a,b):
  return a+b


def reduce(a,b):
  return a-b


print("计算结果是:%d" %add(1,2))

hello3.py 文件内容

import cal


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

执行 hello3.py 的结果

图片

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

name ="张三"


def add(a,b):
  return a+b


def reduce(a,b):
  return a-b


if __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

示例

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
  • 解释器
    +关注

    关注

    0

    文章

    98

    浏览量

    6422
收藏 人收藏

    评论

    相关推荐

    TensorFlow常用Python扩展

    TensorFlow 能够实现大部分神经网络的功能。但是,这还是不够的。对于预处理任务、序列化甚至绘图任务,还需要更多的 Python 。下面列出了一些常用的 Python :Nu
    发表于 07-28 14:35

    使用pythonapriltag对AprilTag进行检测

    AprilTags二维码的检测与应用1 AprilTags介绍2 使用pythonapriltag对AprilTag进行检测2.1 python模块apriltag的安装2.2
    发表于 08-17 06:23

    请问python-树莓派如何通过按键控制步进电机正反转?

    步进电机驱动原理是什么?python-树莓派如何通过按键控制步进电机正反转?
    发表于 10-09 08:45

    python常见异常类型

    ,我们统称为异常。正常情况下,异常都不会被程序处理,而是以错误信息的形式展现出来。异常有很多种类型,Python内置了几十种常见的异常,就在
    发表于 03-04 16:59

    python如何主动抛出异常和捕获异常

    python如何主动抛出异常和捕获异常1. 如何抛出异常异常的产生有两种来源:一种是程序自动抛出,比如 1/0 会自动抛出 ZeroDiv
    发表于 03-04 17:10

    什么是python模块和库?

    1. 模块以 .py 为后缀的文件,我们称之为 模块,英文名 Module。模块让你能够有逻辑地组织你的 Python 代码段,把相关的代码分配到一个
    发表于 03-09 16:48

    python常规与命名空间

    python常规与命名空间1. 常规包在 Python 3.3 之前或者说 Python 2 中,一个
    发表于 03-11 15:46

    python-控制khr3hv-master机器人

    python-控制khr3hv机器人,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-22 15:40 2次下载

    python-速成指南

    python 提供好用的两个容器:list 和 dict。插句题外话,其实最好用的容器还是 PHP 提供的关联数组,一个数组就包括了 python 中 list 和 dict 的全部功能,实在是很赞。
    发表于 03-28 16:32 9次下载

    python如何捕获异常和主动抛出异常

    python如何主动抛出异常和捕获异常 1. 如何抛出异常异常的产生有两种来源: 一种是程序自动抛出,比如 1/0 会自动抛出 Zero
    的头像 发表于 03-04 17:09 9185次阅读

    Python-基本概念

    python源程序就是一个特殊的文本文件,可以使用任意文本编辑软件做开发
    的头像 发表于 02-16 14:49 404次阅读
    <b class='flag-5'>Python-</b>基本概念

    Python-模块与包

    模块Python 程序架构的一个核心概念
    的头像 发表于 02-16 14:55 549次阅读
    <b class='flag-5'>Python-</b><b class='flag-5'>模块</b>与包

    Python-字典

    dictionary (字典) **是除列表外** Python **中,最灵活的数据类型
    的头像 发表于 02-16 15:02 431次阅读
    <b class='flag-5'>Python-</b>字典

    Python-正则与简单web服务器

    Python中,可以通过使用** re 模块**的正则表达式来匹配字符串
    的头像 发表于 02-16 15:48 364次阅读
    <b class='flag-5'>Python-</b>正则与简单web服务器

    网络工程师学Python-文件删除

    Python 文件删除是 Python 开发中常用的一项操作,本文将针对 Python 中的 os 模块提供多个示例,介绍如何删除不同类型的文件。
    的头像 发表于 04-27 09:24 320次阅读