Python中与……语法示例

  介绍

这篇文章给大家分享的是有关Python中与……语法示例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

从Python 2.5就有,需要从__future__进口with_statement。自Python 2.6开始,成为默认关键字。

也就是说,是一个控制流语句,跟如果//,/尝试之类的是一类的,与可以用来简化尝试最后代码,看起来可以比尝试最后更清晰。

with  EXPRESSION [变量,as ],并且块

基本思想是与所求值的对象必须有一个__enter__()方法,一个__exit__()方法。

紧跟与后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给的后面的变量。当后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。

表达式的值为变量的执行过程是,首先执行__enter__函数,它的返回值会赋给的后面的变量,想让它返回什么就返回什么,只要你知道怎么处理就可以了,如果不写作为变量,返回值会被忽略。

然后,开始执行使用块中的语句,不论成功失败(比如发生异常,错误,设置sys.exit()),在使用块执行完成后,会执行__exit__函数。

这样的过程其实等价于:

试题:   ,,,执行,__enter__的内容   ,,,执行,with_block。   最后:   ,,,执行,__exit__内容

再看个例子

file =,开放(“/tmp/foo.txt")   试一试:   ,,,data =,以()   最后:   ,,,file.close ()

使用与……的方式替换,修改后的代码是:

with 开放(“/tmp/foo.txt"), as 文件:   ,,,data =,以() # !/usr/bin/env  python   #,with_example01.py   ,,   class 示例:   ,,,def  __enter__(自我):   ,,,,,,,print “拷贝__enter__ ()“;   ,,,,,,,return “Foo"   ,,   ,,,def  __exit__(自我、,类型,价值,,跟踪):   ,,,,,,,print “拷贝__exit__ ()“;   ,,,,,,,,   def  get_sample ():   ,,,return 样本()   with  get_sample (), as 示例:   ,,,print “示例:“,,示例

执行结果为

拷贝__enter__ ()   示例:Foo   __exit__拷贝()

1。__enter__()方法被执行

2。__enter__()方法返回的值——这个例子中是“Foo",赋值给变量& # 39;示例# 39;

3。执行代码块,打印变量“sample"的值为“Foo"

4。__exit__()方法被调与真用正强大之处是它可以处理异常。可能你已经注意到样本类的__exit__方法有三个参数- val,类型和痕迹。这些参数在异常处理中相当有用。

感谢各位的阅读!关于Python中与……语法示例就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

Python中与……语法示例