该
socket模块相当底层,使您几乎可以直接访问C库功能。
您始终可以使用
contextlib.contextmanager装饰器来构建自己的装饰器:
import socketfrom contextlib import contextmanager@contextmanagerdef socketcontext(*args, **kw): s = socket.socket(*args, **kw) try: yield s finally: s.close()with socketcontext(socket.AF_INET, socket.SOCK_DGRAM) as s:
或用于
contextlib.closing()达到相同效果:
from contextlib import closingwith closing(socket.socket(socket.AF_INET, socket.SOCK_DGRAM)) as s:
但是
contextmanager()装饰器使您有机会首先使用套接字执行其他 *** 作。
Python 3.x确实可以
socket()创建上下文管理器,但是直到2016年Python
3.5周期才进行更新,文档并未得到反映。请参阅源代码中的
socket类,其中添加了
__enter__和
__exit__方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)