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

Python语法基础笔记(六)

一、异常

  1. 抛出异常 raise (自己在代码中自定义异常的情况)

    步骤:

    1. 创建一个Exception(‘XXX’)对象,XXX-----异常提示信息

    2. raise抛出这个对象(异常对象)

  2. 捕获异常:

    基本格式:

    try:

    # 1. 可能触发异常的代码块(核心)

    风险代码 # 如:除法、文件操作、网络请求等

    except 异常类型1 [as 异常对象]:

    # 2. 捕获指定类型异常后的处理逻辑

    处理逻辑1 # 如:打印错误、记录日志、兜底操作

    except 异常类型2 [as 异常对象]:

    # 可捕获多个不同类型异常,按顺序匹配

    处理逻辑2

    else:

    # 3. 可选:try块无异常时执行(非必须)

    无异常逻辑 # 如:提示操作成功

    finally:

    # 4. 可选:无论是否异常,最终必执行(非必须)

    收尾逻辑 # 如:关闭文件、释放资源

    注意:

    • as 异常对象:可选,用于获取异常的详细信息(如错误描述、堆栈),常用变量名 e/err;

    • 异常类型需继承自 BaseException(Python 所有异常的基类),常见如 ZeroDivisionError、FileNotFoundError、KeyError 等;

    • 若省略异常类型(except:),会捕获所有异常(不推荐,易隐藏逻辑错误)。

  3. 案例:

    需求: 密码长度不足,就报异常

    分析:用户输入密码,判断密码长度是否大于等于6,小于6位就报异常,即抛出自定义异常,并捕获异常

    注意:捕获异常是为了检测到异常时代码还能继续往下执行,即程序不会停止运行

    代码:

    def check_password(): pwd = input("请输入密码:") if len(pwd) >= 6: return "密码输入正常" raise Exception("密码长度不足,输入失败") try: # 捕获异常 print("密码输入结果:",check_password()) # 调用函数 except Exception as e: print("密码输入异常:",e)

二、模块

  1. 含义:

    模块是python文件中的代码,就是一个py文件,模块名就是文件名,去掉.py后缀,里面定义了函数、类、变量等,需要的时候可以导入使用

  2. 分类:

    1. 内置模块:random、time、os、logging

    2. 第三方模块(第三方库):下载 ---- windows+r进入cmd窗口输入:pip install 模块名

    3. 自定义模块:自己在项目中定义的模块。注意:命名要遵循标识符规定以及变量的命名规范,不要与内置模块起冲突,否则导致模块功能无法使用

  3. 导入模块方式:

    1. import 模块名 :

      语法:import 模块1(,模块2,模块3……)

      注意:可以导入多个模块,但是最好一个模块单独使用一个import

      调用功能:模块名.功能名 & 模块名.变量

    2. from … import… :

      语法:from 模块名 import 功能1,功能2…

      调用功能:直接输入功能即可,不需要添加模块名

      注意:import后面填写需要导入的功能,没有导入,报错;导入函数,只需要函数名,不需要加上()

    3. from ... import * :

      语法: from 模块名 import *

      含义:把模块中的所有内容全部导入

      注意:不建议过多使用from...import...声明,有时候命名冲突会造成一些错误

  4. as 起别名

    1. as 给模块起别名

      语法:import 模块名 as 别名 ----import pytest as pt

      调用:pt.func() & pt.name

    2. as 给功能起别名

      语法: from 模块名 import 功能 as 别名

      调用:from pytest import func as f , name, funb as b

      注意:导入多个功能,使用“,” 逗号将功能与功能隔开,后面的功能也可以取别名:功能名 as 别名

  5. 内置全局变量

    1.语法:

    if __name__ == "__main__":
    1. 作用:用来控制py文件在不同的应用场景执行不通的逻辑

    2. __ name __:

      1. 文件在当前程序执行(即自己执行自己):__ name __ == "__ main __"

        下面的代码会被执行

      2. 文件被当作模块被其他文件导入:__ name __ == 模块名

        下面的代码不会被显示出来

    3. 总结:

      运行方式

      __name__的值

      if内代码是否执行

      直接运行脚本

      "__main__"

      导入为模块使用

      模块名

三、包

  1. 含义:就是项目结构中的文件夹/目录

  2. 与普通文件夹的区别:

    包是含有__ init __.py的文件夹

  3. 作用:将有联系的模块放到同一个文件夹下,有效避免模块名称冲突问题,让结构更清晰

  4. 新建包:pycharm 中右键项目名--> New-->Python Package,创建后文件夹下自动带有__ init __.py的文件

  5. 注意:

    • import 导入包时,首先执行__ init __.py文件的代码;

    • 不建议在此文件写大量代码,尽量保证init的内容简单;

    • __ init __.py文件主要作用:导入这个包内的其他模块

  6. __ all __ : 本质上是一个列表,列表里面的元素就代表要导入的模块

    作用:

    • 可以控制要导入的东西

    • 当使用 from 模块名 import * 时,哪些名称会被导入

    • 仅作用于 from 模块名 import * 语句,对其他导入方式无任何影响

    • 定义形式:__ all __= [字符串1, 字符串2, ...],列表中的字符串必须是模块内已定义的名称(函数、类、变量等)

    使用方式:

    • 先在__ init __.py文件中使用 __ all __= ["register", "login"],列表中代表要引入的模块

    • 然后再在要导入的py文件里面导入from pack import *

    • 注意:* 代表所有,但是使用列表后,只导入列表中的模块了

  7. 包的本质依然是模块,包又可以包含包

  8. 补充总结:

    特性

    __all__

    __name__

    核心作用

    控制import *导入的名称范围

    区分脚本 “直接运行”/“被导入为模块”

    作用对象

    模块的对外接口

    脚本的运行方式

    数据类型

    列表(字符串元素)

    字符串

    影响范围

    from 模块 import *

    整个脚本 / 模块

http://www.cnnetsun.cn/news/158460.html

相关文章:

  • 毕设救星:Spring Boot + Neo4j 打造“医疗知识问答”——基于知识图谱的智能导诊平台
  • 华为网络设备基本配置命令
  • 志同道合交友网站毕业论文+PPT(附源代码+演示视频)
  • 【Java 25 LTS六大核心特性】
  • Langchain-Chatchat助力医疗文档智能检索与问答
  • Langchain-Chatchat如何实现文档相似度比对?查重与去重依据
  • java学习--String和StringBuffer互转
  • 如何用Langchain-Chatchat实现本地化AI智能问答?
  • Langchain-Chatchat如何处理多义词歧义?上下文感知消歧算法
  • Langchain-Chatchat如何实现文档访问统计?了解知识使用情况
  • Langchain-Chatchat与Argo CD持续交付集成:自动化部署流水线
  • Langchain-Chatchat与Consul服务发现集成:动态节点管理
  • Langchain-Chatchat与Airflow工作流集成:复杂ETL流程调度
  • 验证码实现
  • 2.1 CPU脚本性能优化简介
  • Langchain-Chatchat问答系统压测报告:万级QPS承载能力验证
  • Langchain-Chatchat支持自定义元数据字段:扩展文档属性信息
  • 双侧独立电驱动车辆转向控制:Matlab/Simulink建模之旅
  • 500kW三相光伏并网逆变器仿真模型探索
  • 基于Optislang的电机多目标优化:以电机气息磁通密度空间某一阶次为优化目标教程
  • 彼得林奇对公司自由现金流转换率的分析
  • 通达信止损价位
  • Langchain-Chatchat与Elasticsearch集成:增强全文检索能力
  • 历年中国海洋大学计算机考研复试上机真题
  • Langchain-Chatchat与OpenAI对比:为何本地化部署更受企业青睐
  • 用 SAT 运行时跟踪自动生成 ABAP 的 UML 时序图:拦截标准生成器,输出 PlantUML,让文档从痛苦变成顺手
  • 什么是护网(HVV)?参加护网需要掌握什么技术?
  • 通过微调通用视觉或时序大模型提升小样本预测能力,或利用生成模型(如GAN、扩散模型)进行高质量数据增强与情景模拟
  • Rust嵌入式开发终极指南:用cross实现DMA驱动的零配置跨编译
  • Carnac:让你的键盘操作惊艳全场!3大核心功能深度解析