[英]Is there a point to using a with statement for creating a stem.control.Controller object?
我有一些 python 與 Tor 守護進程對話,在這里它告訴守護進程關閉。
from stem import Signal
from stem.control import Controller
def shutDownTor():
with Controller.from_port(port=portNum) as controller:
controller.signal(Signal.SHUTDOWN)
我正在使用with
語句,因為我從學習中竊取的代碼也是如此。 代碼工作正常,但我想知道使用with
語句是否有任何意義。
我知道當你使用with
打開文件時,它確保文件關閉,即使有Exception
或中斷。 但在這種情況下,它似乎是所有with
正在做的是增加了沒有必要的標簽。 變量controller
甚至留在命名空間內。
如果你想擺脫with
語句,你必須自己處理所有的open
、 close
和exception
。
這將導致:
try:
controller = Controller.from_port()
except stem.SocketError as exc:
print("Unable to connect to tor on port 9051: %s" % exc)
sys.exit(1)
finally:
controller.close()
結果相同,我將引用“不必要的標簽”。
如果您知道並准備好應對所有后果,您可以跳過所有這些(處理close
、 open
和exception
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.