1.先执行expression,然后执行该表达式返回的对象实例的__enter__函数,然后将该函数的返回值赋给as后面的变量。(注意,是将__enter__函数的返回值赋给变量) 2.然后执行with block代码块,不论成功,错误,异常,在with block执行结束后,会执行第一步中的实例的__exit__函数 with-as语句使用举例 (1)打开文件的例子...
当然with...as...并非固定组合,单独使用with...也是可以的,上下文管理器的__enter__方法还是正常执行,只是这个返回值并没有赋给一个变量,with下面的代码块也不能使用这个返回值。2、__exit__方法说明上下文管理器的__exit__方法接收3个参数exc_type、exc_val、exc_tb,如果代码块BLOCK发生了异常e并退出,这3...
用with '''with的用法是这样的'''classA(object):def__init__(self,data):self._data=data@propertydefdata(self):returnself._datadef__doc__(self):return("这是一个类A")def__enter__(self):print("这个是enter函数")returnselfdef__exit__(self,exc_type,exc_val,traceback):print("这个是exi...
可以readlines()的。目测你是在python shell里输入的,检查一下语法有没有错误,另外建议把错误消息贴全...
with G as f : print("hello") for i in f: print(i,end="\t") #测试1:执行体中发生异常 raise Exception("母鸡啊") print("main continue") 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
4with open('spam.txt', 'r') as fp: 5 fp.write('Spam and eggs!')""" 1. 2. 3. 4. 5. 再举个例子,在python并发之concurrent快速入门一文中,对比多线程和多进程的并发操作时,也使用了with包装上下文管理器的用法: 1from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor ...