【编程】Python with 语句

依靠封装环境管理里面的预备和清理任务,with 语句用来实现异常的处理。将通常的 try..except..finally 使用模式封装起来,方便重复利用和减少处理异常的程序代码量。with 语句在一个块了里面创建资源,在这个块里面写代码处理资源,当退出这个程序块的时候,资源会得到释放,无论是正常退出,还是异常退出。

语法

   with 表达式[as 变量]:
with-block

with 语句有 __enter()__exit()函数,它们在语句的开始和结束被分别调用。对象的 __enter__()在with块执行之前被调用,这样可以运行建立的代码。如果给定变量名称,返回值也可以被赋值给变量。在with块执行结束后,对象的__exit__()方法被调用,及时是异常结束也会调用,可以用来做清理工作,类似于 .Net语言的 using 语句。

With 语句使用方法

在大多数情况,with 关键字被用于不被管理的资源(如文件流),为try…finally blocks提供了语法糖。下面是一个使用 try,except, 和 finally 语句的例子,完成打开、读文件 “myFile.txt” 的操作。

例子

try:
file = open("myFile.txt", "r")
print(file.read())
except:
print("出错了!")
finally:
file.close()

下面的程序使用 with 语句。

例子

with open("myFile.txt", "r") as file:
print(file.read())

在上面的例子,with 语句在代码结束后,自动的关闭文件。使用 with 语句的优势是,不用关心嵌套的代码块是如何退出的。如果在程序块结束之前,发生了异常,文件会在外面的异常处理之前被关闭。如果嵌套块包括 return语句,或continue语句,或break语句,则在这些语句将被执行前 with 语句就会提前关闭文件。

线程里面的 with 语句

例子

lock = threading.Lock() 
with lock:
thread1.start()
thread2.start()

Python 库里面的大量资源都需要遵守 with 语句的需求协议,这样都可以应用 with 语句。无论何时,在需要请求资源的时候,都要明确的使用它,包括文件、网络连接、锁等等。

Python流控制语句

 Python 数据结构



此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , , , , , , 标签。将固定链接加入收藏夹。