目录
Python异常
Python模块
Python包
写在最后
概念解释:致使Python解释器无法运作的错误,即BUG
异常的捕获
概念&作用:提前假设某处会出现异常,做好提前准备,当真出现问题时所弥补的后续手段,目的在于不因一个BUG导致程序的整体崩溃
try: 可能发生错误的代码 except: 如果出现错误要执行的代码
# 常规异常捕获
try: # 检测异常
f = open("C:/Users/86186/Desktop/PCP/file.txt","r",encoding="UTF-8") # 只读模式
f.write("text_file_r") # 写入操作——错误——转至except
f.flush()
print(f.read())
f.close()
except: # 修正手段
print("出现错误,修改文件访问方式") # 输出
f = open("C:/Users/86186/Desktop/PCP/file.txt","w",encoding="UTF-8") # 可写模式
f.write("text_file_w") # 写入内容
f.flush() # 刷新缓冲区
print("文件重置完成") # 输出
f.close() # 关闭文件
f = open("C:/Users/86186/Desktop/PCP/file.txt","r",encoding="UTF-8") # 只读模式
print(f"输出文件内容:{f.read()}") # 输出文件内容
f.close() # 关闭文件
# 输出结果:
# 出现错误,修改文件访问方式
# 文件重置完成
# 输出文件内容:text_file_w
注意事项
# 基本语法: try: 可能发生错误的代码 except ZeroDivisionError as e: print(f"异常类型为{e}")
# 指定异常捕获
try: # 检测异常
1/0 # 预计为 ZeroDivisionError 即除零异常
except ZeroDivisionError as e: # 修正手段
print(f"出现了变量未定义的异常:{e}") # 输出
print("指定异常捕获成功")
# 输出结果:
# 出现了变量未定义的异常:division by zero
# 指定异常捕获成功
注意事项
# 基本语法: try: 可能发生错误的代码 except (异常_1,异常_2,······) as e: print(f"异常类型为{e}")
# 多个异常捕获
try:
1/0
except (NameError,ZeroDivisionError) as e:
print("未定义变量异常或除零异常捕获")
print(f"确认为 {e} 异常\n异常捕获成功")
# 输出结果:
# 未定义变量异常或除零异常捕获
# 确认为 division by zero 异常
# 异常捕获成功
注意事项
# 基本语法: try: 可能发生错误的代码 except Exception as e: print(f"异常类型为{e}")
# 全部异常捕获
try:
1/0
except Exception as e:
print(f"确定代码异常类型为:{e}\n异常捕获成功")
# 输出结果:
# 确定代码异常类型为:division by zero
# 异常捕获成功
注意事项
概念&作用:else为程序不出错的情况下执行else内的代码,finally为程序不论出错与否都会执行的代码
# else & finally操作
try:
1<2
except:
print("程序出现异常")
else:
print("程序未出现异常")
finally:
print("判断完成")
# 输出结果:
# 程序未出现异常
# 判断完成
注意事项
概念&作用
注意事项
语法:[ from 模块名 ] import [ 模块 | 类 | 变量 | 函数 | * ] [ as 别名 ]
常见的组合形式
import 模块名
注意事项
from 模块名 import 类、变量、方法(功能)
注意事项
from 模块名 import *
注意事项
import 模块名 as 别名
注意事项
from 模块名 import 功能名 as 别名
注意事项
# 模块的导入
# import text_file_copy
# import text_file_star
# 导入整个模块
# import time # 可实现time.sleep sleep无法单独实现
# 导入模块中的部分功能
# from time import sleep # 不可实现time.sleep sleep可以单独实现
# 导入模块中的全部功能
# from time import * # 无法实现time.sleep sleep可单独实现
# 赋予模块别名
# import time as TIME # 可实现TIME.sleep time.sleep/sleep无法单独实现
# 赋予功能别名
# from time import sleep as SLEEP # 无法实现time.SLEEP sleep 可实现time.sleep SLEEP
# 实例代码段:
# print("睡眠开始")
# SLEEP()
# print("睡眠结束")
# form可以省略
# as 可以省略
# 可以通过‘.’来确定层级关系
概念&作用:通过自定义模块的方式制作一些Python内置没有但是方便自己的模块
每个Python文件都可以作为一个模板,模块的名称就是文件的名称,文件名称的定义需要符合标识符命名规则
# 同步测试的解决方案
# from text_file_star import text_file # 自定义模块star
# from text_file_copy import text_file # 自定义模块copy
# show = text_file()
# print(f"调用结果:{show}")
# 输出结果:
# 调用结果:0
# 可见在调用不同模块的同名功能时,后调用的模块会覆盖之前调用模块的同名功能
注意事项
概念&作用:当在模块文件中进行测试代码段的时候,此时当前文件以及所有导入该模块的文件在运行代码段的时候都会同步运行,可以通过 " if __name__ == '__main__' " 来实现只测试当前文件的代码段功能
def func():
return ("返回值:1")
if __name__ == '__main__': # 语法实现代码段只在当前文件运行
print (func()) # 不会影响到其余引用当前文件为模块的代码或文件
概念&作用:当在模块文件中有 “ __all__ ” 变量,当模块导入方式使用from 模块名 import * 时,只能一键导入 “ __all__ ” 列表中的指定的功能
# 功能限制
# from text_file_star import *
# print(text_file_1())
# print(text_file_2())
注意事项
概念&作用:从物理层面来看,包不过是一个包含各类模块文件的文件夹
其中还包括一个 " __init__.py " 文件以至于将其识别为包,包的本质还是模块,当模块过多时可以通过包来整合管理模块
概念&作用:在Pycharm中直接创建Python package文件即可, __init__.py 文件会自动创建
自定义包的导入:语法:import 包名 . 模块名
# 自定义包的导入
import text_package.text_file_package # 导入自定义的包
print(text_package.text_file_package.text_file_1()) # 通过层级关系来使用包内的功能
from text_package.text_file_package import text_file_1,text_file_2 # 导入自定义的包
print(text_file_2()) # 直接使用包的功能
# 输出结果:
# 0
# 1
功能限制:__all__变量
概念&作用:当在模块文件中有 “ __all__ ” 变量,当模块导入方式使用from 模块名 import * 时,只能一键导入 “ __all__ ” 列表中的指定的功能
注意事项
导入方式:Windows - 搜索框 - cmd - 命令提示符 - pip install 第三方包的名称(例如 numpy )
注意事项
使用方法如下图所示
注意事项
如有错误欢迎私聊或评论区指出
一些浅显的看法和知识点汇总 内容引用有黑马课程中的部分内容
视频链接(传送门):
《2022新版黑马程序员python教程,8天python从入门到精通,学python看这套就够了》
异常的捕获:
https://www.bilibili.com/video/BV1qW4y1a7fU?p=91&vd_source=77f607110a61793619d53eda630e2057
模块:
https://www.bilibili.com/video/BV1qW4y1a7fU?p=94&vd_source=77f607110a61793619d53eda630e2057
包:
https://www.bilibili.com/video/BV1qW4y1a7fU?p=96&vd_source=77f607110a61793619d53eda630e2057