- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一篇文章带你弄懂Python特别传递和自定义特别
一、特别的传递
1. try嵌套中
import time
try:
f = open(test.txt)
try:
while True:
content = f.readline()
if len(content) == 0:
break
time.sleep(2)
finally:
f.close()
print(关闭文件)
except :
print(没有这个文件)
finally:
print(最终的finally)
# 这是test.txt文件中读取到信息
运转结果:
2. 函数嵌套调用中
def test1():
print(----test1-1----)
print(num)
print(----test1-2----)
def test2():
print(----test2-1----)
test1()
print(----test2-2----)
def test3():
try:
print(----test3-1----)
test1()
print(----test3-2----)
except Exception as result:
print(捕获到了特别,信息是:%s%result)
print(----test3-2----)
test3()
print(------华丽的分割线-----)
test2()
运转结果:
小总结:
假如try嵌套,那么假如里面的try没有捕获到这个特别,那么外面的try会接收到这个特别,然后进行处理,假如外边的try照旧没有捕获到,那么再进行传递。
假如一个特别是在一个函数中产生的,例如函数A----函数B----函数C,而特别是在函数C中产生的,那么假如函数C中没有对这个特别进行处理,那么这个特别会传递到函数B中,假如函数B有特别处理那么就会依据函数B的处理方式进行执行;假如函数B也没有特别处理,那么这个特别会连续传递,以此类推。。。假如全部的函数都没有处理,那么此时就会进行特别的默认处理。
二、抛出自定义的特别
你可以用raise语句来引发一个特别。特别/错误对象必需有一个名字,且它们应是Error或Exception类的子类
下面是一个引发特别的例子:
class ShortInputException(Exception):
自定义的特别类
def __init__(self, length, atleast):
#super().__init__()
self.length = length
self.atleast = atleast
def main():
try:
s = input(请输入 -- )
if len(s) 3:
# raise引发一个你定义的特别
raise ShortInputException(len(s), 3) #自定义特别长度为3。
except ShortInputException as result:#x这个变量被绑定到了错误的实例
print(ShortInputException: 输入的长度是 %d,长度至少应是 %d% (result.length, result.atleast))
else:
print(没有特别发生.)
main()
运转结果:
以上程序中,关于#super().init()代码的说明:
????这一行代码,可以调用也可以不调用,建议调用。
? 由于__init__方法往往是用来对创建完的对象进行初始化工作,假如在子类中重写了父类的__init__方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,所以在以后的开发中,假如重写了父类的__init__方法,最好是先调用父类的这个方法,然后再添加本人的功能。
三、特别处理中抛出特别
class Test(object):
def __init__(s
文档评论(0)