包的路径和异常处理

绝对路径和相对路径

绝对路径就是从上往下一级一级的导入,最常用的就是绝对路径

绝对路径的优点:不管在包的内部还是外部,导入了就可以用

     缺点:不能挪动,但是很直观

相对路径就是from 包.模块           加.的就是相对路径。例如import.A包  接下来A包里面的所有功能都能够使用了

相对路径的优点:可以随意移动包的位置,只要能找到包的位置,就可以使用包里的模块

     缺点:不能再包里使用模块了。例如在a下面有b和c,一旦在b里面用了相对路径调用模块,接下来在c里面就不能调用a内部的所有模块,只能在a的外部才能够调用

无论是from还是import都遵循一个原则,凡是带.的左边一定是一个包

需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法

 异常处理

异常处理:处理的是代码当中的逻辑错误,例如1/0,2+'3'

异常处理格式

try:
ret = int(input('请输入'))
print(ret*'*') #必须放入try和except内部才可以执行异常处理
except ValueError as error:
print('您输入的内容有误,请重新输入数字',error)


另外except支持多分枝
try:
print('1111')
1/0
print('2222')
name
2+'3'
[][3]
{}['k']
ret = int(input('number >>>'))
print(ret*'*')
except ValueError:
print('输入的数据类型有误')
except Exception:
print('你错了,老铁')
else:
print('没有异常的时候执行else中的代码')
print('===========')

有没有一种能处理所有异常的处理方式呢,有的
except Exception  #这样就可以处理所有的异常

有了万能处理仍然不完美,因为不知道哪里出现了异常,那么就需要
try:
print('1111')
1/0
print('2222')
name
2+'3'
[][3]
{}['k']
ret = int(input('number >>>'))
print(ret*'*')
except Exception as error: #as 给万能处理起别名
print('你错了,老铁',error) #在这里把异常的位置打印出来


程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
使用try和except就能处理异常
try是我们需要处理的代码
except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
except支持多分支
有没有一个能处理所有错误的类型 : Exception
有了万能的处理机制仍然需要把能预测到的问题单独处理
单独处理的所有内容都应该写在万能异常之前
else : 没有异常的时候执行else中的代码
函数里做异常处理用,不管是否异常去做一些收尾工作


finally   的作用是不管是否发生异常,都执行finally后面的内容
finally一般用在函数当中,当遇到return时,依然会执行
原文地址:https://www.cnblogs.com/ddjl/p/8276019.html