首页 > 编程知识 正文

python end用法,python中input的用法

时间:2023-05-05 03:26:06 阅读:114669 作者:941

来源: kqdsb公众号: Python与数据分析链接: https://MP.weixin.QQ.com/s/6 jbvyl1yovbryvqcdc 67 SG

无论try语句是否抛出异常,finally语句都将执行。 看看下面的例子。 try:

f=open('/tmp/output ',' w ' ) )。

f .写入(hello ) ) )。

#raiseexception(somethingwrong ) )。

finally:

打印(关闭文件) )。

f.close ) )无论在使用try编写文件时是否存在异常,finally都将执行关闭文件的操作。 由于finally的这一特性,finally经常被用于清洁工作。

下面的示例查看deffunc1(: )

try:

返回1

finally:

返回2

deffunc2(: )

try:

raise ValueError (

except:

返回1

finally:

返回3

打印(func1) )

print(func2) (在本例中为func1) )和func2) )返回什么? 答案是func1) )返回2,func2) )返回3。 为什么会这样呢? 首先,让我们来看看Python官网上对finally的说明。 afinallyclauseisalwaysexecutedbeforeleavingthetrystatement, whetheranexceptionhasoccurredornot.whenanexceptionhasoccurredinthetryclauseandhasnotbeenhandledbyanexceptclause (ur red in a exxcured ) itis re-raisedafterthefinallyclausehasbeenexecuted.thefinallyclauseisalsoexecuted " on the way out " whenanyotherclauseofthetred

重点部分用粗体字表示。 翻译为中文时,try块包含break、continue或return语句。 在离开try块之前,还会执行finally语句。

因此,在上面的示例中,func1) )在try块return之前执行finally语句,忽略try return,最终返回的值是finally return的值。 func2) )中,向try块抛出异常,由except捕获,在except块返回之前执行finally语句,忽略except返回,最终返回的值为finally返回

在上例中输入print语句可以更清楚地看到进程def func1) ) :

try:

打印' in func 1try : try statement,will return 1'

返回1

finally:

print ' in func1finally : try statement,will return 2'

返回2

deffunc2(: )

try:

print ' in func2try : raise error '

raise ValueError (

except:

print ' in func2except : caught error,will return 1!'

返回1

finally:

print ' in func2finally 3360 will return3'

返回3

打印功能1 () )。

打印函数2 ) )上的代码输出in func1 try: try statement,will return 1

in func1finally : try statement,will return 2

2

in func2 try: raise error

in func2 except: caught error,will return 1!

in func2 finally: will return 3

3我们对上面的func2进行了一些修改,如下def func2() :

try:

print ' in func2try : raise error '

raise ValueError (

except IndexError:

print ' in func2except : caught error,will return 1!'

返回1

finally:

print ' in func2finally 3360 will return3'

返回3

打印函数2 ) )输出以下in func2 try: raise error

in func2 finally: will return 3

3try抛出的异常属于ValueError类型,而except将其定位为索引error类型,不会捕获try抛出的异常,因此不会执行except语句,但不知道是否捕获到异常

这里还可以看到别的问题。 在try中抛出的异常不会被捕获,本来应该在finally运行完成后再次抛出,但在finally中执行了return,异常丢失。

可以看到,在finally中使用return会遇到很多问题。 在实际的APP应用程序中,finally不建议使用返回返回。

多读

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。