一、异常
1.1.概念
1).程序执行过程中,python解释器遇到错误,程序不再向下执行,并且提示错误信息,这就是异常
2).程序不再向下执行,并且提示错误信息的动作,就是抛出(raise)异常(Java是throw)
1.2.为什么要捕捉异常
1).程序开发人员无法消灭异常(比如网络不稳定)
2).只能靠捕捉异常,并对捕捉到的异常进行相应处理(图片加载失败,要提示相应的错误信息并处理)
1.3.异常的捕获
1).使用try...except来捕获异常并处理异常,把可能出现异常的代码放在try缩进部分
2).except部分的代码只有在发生异常时才会执行,可以处理异常修复或信息提示
3).只要捕捉了异常,不管异常是否发生,程序都可以正常结束
4).在try语句中出现异常,异常后面的代码不再执行
5).捕获指定异常时,在except后面添加异常类型---格式:except异常类型
6).对同一个异常捕获多次,只执行第一次捕获的异常代码
7).一次捕获多个异常格式:except(异常类型1,异常类型2,..):---作用:对不同的异常有相同的处理结果
8).捕获任意类型异常(绝大部分)格式:exceptException:
9).获取异常的错误信息,给异常类型起别名---except异常类型名as变量别名(变量别名中记录异常的错误信息)
1.4.异常的完整语法
1).格式
(else只有在没有异常时才会执行的代码,finally无论是否有异常,都会执行的代码)
2).应用:在打开文件向文件写入数据时程序崩溃,此时可以在finally部分添加关闭文件资源的操作,避免系统资源浪费
1.5.异常的传递
1).如果在被调用的函数中有异常没有捕获处理,则会把异常传递给调用的地方
2).最终传递到Python解释器依然没有捕获异常,则程序崩溃
1.6.抛出异常
1).创建Exception异常类的对象参数就是错误的提示信息
2).使用raise抛出异常,语法:raiseException("异常的错误提示信息")
二、模块
2.1.概念和使用
1).以.py结尾的文件原则上都可以作为模块使用,把成熟稳定的代码封装到模块中,便于其它开发者使用
2).模块名必须符合标识符的命名规范,(由数字,字母,下划线组成,并且不能以数字开头)
3).模块中可以封装全局变量,函数,类等,当做工具可以提供给其它开发者使用
4).使用模块,则需要
4.1).先导入模块import 模块名
4.2).使用模块中工具,模块名.全局变量名/模块名.函数名()/模块名.类名()
2.2.给模块起别名
1).作用:如果模块名太长,可以使用as给模块起别名
2).说明
2.1).格式:import模块名as模块别名
2.2).注意:模块别名要符合大驼峰命名法则
2.3.导入模块的两种方式
1).import 模块名
1.1).特点:将模块中所有的全局变量,函数,类全部导入
1.2).访问方式:模块名.全局变量、模块名.函数()、模块名.类名()
2).from模块名import全局变量/函数/类名
2.1).特点:将所需要的全局变量/函数/类名导入
2.2).访问方式:直接使用全局变量名/函数()/类名()
2.4.模块的搜索顺序
1).导入模块时,先在当前目录下查找,如果查找到了,就导入
2).如果当前目录下没有找到模块,则导入系统模块
3).可以使用__file__属性查看模块的路径,使用方式:模块名.__file__(前后各两个下划线)
4).在开发时,给python文件起名,不要和系统的模块文件名相同
2.5.__name__内置属性
1).__name__内置属性可以做到,模块代码在测试情况下执行,而在被导入情况下不会执行
2).如果在当前文件中直接打印__name__内置属性,则直接输出字符串__main__
3).如果当前文件被当做模块导入,在导入的文件中直接运行时,则__name__内置属性,输出的就是当前被导入的模块名
4).如果要做到代码在测试情况下执行,而不会在导入情况下执行,要在当前文件中添加if条件判断if__name__ ==”__main__"
三、包
3.1.概念
1).包是包含很多模块的特殊的目录
3.2.结构
1).包中包含_init_.py文件
3.3.作用
1).我们可以把包直接给调用者,调用者导入包后,可以获取到包中所有的模块
3.4.创建包的两种方式
1).在PyCharm中新建一个文件夹,在文件夹新建文件__init__.Py
2).在PyCharm中新建一个文件夹,在文件夹新建文件__init__.Py
3.5.自定义包调用
1).需要在__init__.py文件中添加
2).from.import 模块名
3.6.导入包方式
1).import包名---import 包名
2).from包名import模块名---from包名.模块名import函数名/类名