日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的with关键字

發布時間:2023/12/10 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的with关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

with語句適用于對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。with表達式其實是try-finally的簡寫形式。但是又不是全相同。

""" with 語句實質是上下文管理。 1、上下文管理協議。包含方法__enter__() 和 __exit__(),支持該協議對象要實現這兩個方法。 2、上下文管理器,定義執行with語句時要建立的運行時上下文,負責執行with語句塊上下文中的進入與退出操作。 3、進入上下文的時候執行__enter__方法,如果設置as var語句,var變量接受__enter__()方法返回值。 4、如果運行時發生了異常,或者with結構的程序結束,就退出上下文管理器。調用管理器__exit__方法。 """ class Benchmark():def __init__(self, prefix=None):self.prefix = prefix + ' ' if prefix else ''def __enter__(self):self.start = time.time()def __exit__(self, *args):print('%stime: %.4f sec' % (self.prefix, time.time() - self.start))with Benchmark('Workloads are quared.'):for _ in range(100000):x = nd.random.uniform(shape=(2000, 2000))y = nd.dot(x, x).sum()# 相當于 __init__(self, prefix=None) __enter__(self) for _ in range(100000):x = nd.random.uniform(shape=(2000, 2000))y = nd.dot(x, x).sum() __exit__(self, *args)

其中的context是一個表達式,返回的是一個對象,var用來保存context表達式返回的對象,可以有單個或者多個返回值。

with open('1.txt') as f:print(f.read())print(f.closed)

表達式open('1.txt')返回是一個_io.TextIOWrapper 類型的變量用f接受到。在with語句塊中就可以使用這個變量操作文件。執行with這個結構之后。f會自動關閉。相當于自帶了一個finally。

若1.txt不存在不存在,如下結果:報出異常后該進程被殺死,with本身并沒有異常捕獲的功能,但是如果發生了運行時異常,它照樣可以關閉文件釋放資源。

這個例子可以看出with沒有捕獲異常的功能。

。

1.txt不存在

若1.txt存在,如下結果:

1.txt存在

?

參考資料:

  • https://www.jianshu.com/p/5b01fb36fd4c
  • https://www.cnblogs.com/xiaxiaoxu/p/9747551.html
  • 總結

    以上是生活随笔為你收集整理的python的with关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。