首页 > 代码库 > Python 学习笔记 - 上下文
Python 学习笔记 - 上下文
Python里面有个特殊的模块叫做上下文模块,可以和with搭配来实现一些功能。
他的执行方式是用户需要一个定义一个生成器的函数;with后面跟这个函数,他会执行yield之前的代码;然后跳出来,执行with语句下面的代码,然后再切换回函数,执行finally后面的代码。
比如
import contextlib @contextlib.contextmanager def worker_state(state_list, worker_thread): state_list.append(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) ---------- 123 456 [‘alex‘] []
例2 如果with后面跟个as,我们可以通过yield传递一个对象到as上面,比如下面我就把一个列表对象传给了tt
import contextlib import socket @contextlib.contextmanager def test(num): a=[] a.append(num) try: yield a finally: num+=100 print(num) with test(20) as tt: print(tt) ------------ [20] 120
本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1870150
Python 学习笔记 - 上下文
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。