这篇文章给大家分享的是有关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中与……语法示例就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!