python编程基础(lv3_第六课(end))

学习目标:

python的异常和包的管理

学习内容:

1、 [异常] 2、 [模块和包的导入]

学习时间:

2小时

学习产出:

1、 [异常]
		1、异常介绍
			*当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"
		2、捕获异常 try...except...
			*except 捕获到了IOError异常,并添加了处理的方法
			*pass 表示实现了相应的实现,但什么也不做;如果把pass改为print语句,那么就会输出其他信息
			*把可能出现问题的代码,放在try*把处理异常的代码,放在except*例如:
				try:
					print('-----test--1---')
					open('123.txt','r')
					print('-----test--2---')
				except IOError:
					pass
		3except捕获多个异常
			*except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效
			*实际开发中,捕获多个异常的方式
				try:
					...
				except (IOError,NameError): 
					...
			*当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储
		4、获取异常的信息描述
				try:
					...
				except (IOError,NameError) as result: 
					...			
		5、捕获所有异常
				try:
					...
				except Exceptoin as result: 
					...					
		6、捕获异常中的else
				try:
					...
				except Exceptoin as result: 
					...					
				else:
					...
			*即如果没有捕获到异常,那么就执行else中的事情
		7try...finally...
			*在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等
		8、异常的传递
			*如果try嵌套,那么如果里面的try没有捕获到这个异常,那么外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。。。
			*如果一个异常是在一个函数中产生的,例如函数A---->函数B---->函数C,而异常是在函数C中产生的,那么如果函数C中没有对这个异常进行处理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按照函数B的处理方式进行执行;如果函数B也没有异常处理,那么这个异常会继续传递,以此类推。。。如果所有的函数都没有处理,那么此时就会进行异常的默认处理,即通常见到的那样
		9、抛出自定义的异常
			*可以用raise语句来引发一个异常

2、 [模块和包的导入]

		1、Python中的模块
			*模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
		2import
			*Python中用关键字import来引入某个模块
				例如:import module1,mudule2...
		3from  ... import ...
			*Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
			* from 模块名 import 函数名1,函数名2....
		4fromimport *
			*把一个模块的所有内容全都导入到当前的命名空间也是可行的
		5import ... as ...
		6、定位模块
			*当你导入一个模块,Python解析器对模块位置的搜索顺序是:
				1、当前目录
				2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录
				3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
				4、模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
		7、模块制作
			*定义自己的模块
				*在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字
			*调用自己定义的模块
				*import 包名/from 包名 import*测试模块
				*实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息
				*可以根据__name__变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码
				*如果一个文件中有__all__变量,那么也就意味着这个变量中的元素,不会被from xxx import *时导入	
		8、python中的包
			*引入包
				*同一个文件下的包的导入使用:	
					import 文件.模块
					from 文件夹 import 模块 
			*在文件夹下创建__init__.py文件,写入 __all__=[包名1,包名2...]
			*包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包
			*有效避免模块名称冲突问题,让应用组织结构更加清晰
			*__init__.py文件有什么用:
				__init__.py 控制着包的导入行为
				__init__.py为空,仅仅是把这个包导入,不会导入包中的模块
				在__init__.py文件中,定义一个__all__变量,它控制着 from 包名 import *时导入的模块
			*可以在__init__.py文件中编写内容
				可以在这个文件中编写语句,当导入时,这些语句就会被执行

你可能感兴趣的:(课程学习,python,编程语言)