Python 學習筆記 上下文

2021-09-04 06:34:56 字數 971 閱讀 6345

python裡面有個特殊的模組叫做上下文模組,可以和with搭配來實現一些功能。

他的執行方式是使用者需要乙個定義乙個生成器的函式;with後面跟這個函式,他會執行yield之前的**;然後跳出來,執行with語句下面的**,然後再切換回函式,執行finally後面的**。

比如

import contextlib

@contextlib.contextmanager

def worker_state(state_list, worker_thread):

try:

yield

finally:

state_list.remove(worker_thread)

print(state_list)

free_list = 

current_thread = "alex"

with worker_state(free_list, current_thread):

print(123)

print(456)

print(free_list)

----------

123456

['alex']

例2 如果with後面跟個as,我們可以通過yield傳遞乙個物件到as上面,比如下面我就把乙個列表物件傳給了tt

import contextlib

import socket

@contextlib.contextmanager

def test(num):

a=try:

yield a

finally:

num+=100

print(num)

with test(20) as tt:

print(tt)

------------

[20]

120

python學習筆記 上下文管理器

上下文管理器可以在不需要檔案的時候,自動關閉檔案。下面我們看一下兩段程式 如下 without context manager f open new.txt w print f.closed whether the file is open f.write hello world f.close p...

Python筆記 上下文管理器

with 語句後面的結果物件,需要重寫 enter 和 exit 方法 當進入到 with 塊時,會自動呼叫 enter 方法裡的 當 with 塊執行完成以後,會自動呼叫 exit 方法 class demo object def enter self print enter 方法被執行了 ret...

26 python筆記 上下文管理器

個人部落格 注 enter方法可以寫連線資料庫的操作,exit方法寫斷開連線的操作,用with去管理 注 with開啟的檔案物件,就是1個上下文管理器 注 with語句可以去管理 上下文管理器物件 注 使用with管理,上下文管理器 不需要自己呼叫 enter exit 方法 示例 上下文管理器 上...