好友
阅读权限30
听众
最后登录1970-1-1
|
甜萝
发表于 2022-9-16 19:28
本帖最后由 paypojie 于 2022-9-16 23:16 编辑
不知道起啥标题 想不出
示例:
[Python] 纯文本查看 复制代码 def function():
print(1 / 0)
try:
function()
except Exception as err:
print(err)
finally:
print('你好')
代码注解: 定义一个函数 里面用return返回零除以一的值 try语句下 调用function函数
except 语句表示 捕捉错误类型 并将其保存到err变量中 然后打印错误类型 finally语句意思是无论前面报不报错 语句都会执行
vscode运行结果
发现调用函数时有错误 从错误原因我们可以知道 零不能是除数 执行顺序是正常的 try下面的语句出错了 然后立马执行except下的语句 最后执行finally下的语句
示例2
[Python] 纯文本查看 复制代码 def function():
print(1 / 0)
return 10
try:
function()
except Exception as err:
print(err)
finally:
print('你好')
截图:
右边的代码增加了一行 return 10 但是执行结果却没有变化 这是怎么回事呢 因为try语句下如果出错 立马执行except下的语句
例三:
[Python] 纯文本查看 复制代码 def function():
return 10
# print(1 / 0)
try:
function()
except Exception as err:
print(err)
finally:
print('你好')
截图:
try...except...finally语句中 try语句或者except中含有return语句 但是因为有finally语句 所以会先执行finally语句 return语句在这里执行了 但是没有被打印
例四:
[Python] 纯文本查看 复制代码 def function():
try:
print(1 / 1)
return 1
except Exception as err:
print(err)
finally:
print('你好')
f = function()
print(f)
在这里 我们将函数赋值给了变量 然后打印变量 发现try语句下的return没有立刻执行 而是先执行完finally下的语句 然后再执行return语句
例五:
[Python] 纯文本查看 复制代码 def function():
try:
print(1 / 1)
return 1
except Exception as err:
print(err)
finally:
print('你好')
return 2
f = function()
print(f)
截图:
这一次 return语句返回了2 因为try下的return1 被 finally的return给覆盖了
感觉自己都要被绕晕了 但是编程太有魅力了 嘿嘿
总结一下 在 try...except语句下 try下的语句没出错的话 就会执行把try下的语句给执行完 不会执行except下的语句 如果出错 那么立即就跳转到except语句 执行except下的语句
try...except...finally语句下 try下的语句没出错 就先把try下的语句执行完 然后执行finally语句 如果try下的语句出错 那就立马执行except下的语句 最后再执行finally下的语句 finally语句是无论如何都会执行的
上面这两种情况是没有含有return语句的 什么的情况好理解 因为不含有return语句
下面的情况:
假如 在try...except...finally语句中 try或者except含有return语句 那么return语句会缓冲 会等待finally下的语句执行完 然后再执行return语句 如果同时在finally语句中也含有return语句 那么finally下的语句会把finally什么代码片段中的return给覆盖
要注意 (在下面的情况:) return会返回值 但是要用print语句才能输出返回值 感觉好绕 哈哈
喜欢评论 有意思的评论会晚上锻炼完 回来再看及回复 加油 共勉! |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|