Python 学习笔记 - 上下文,,Python里面有个


Python里面有个特殊的模块叫做上下文模块,可以和with搭配来实现一些功能。


他的执行方式是用户需要一个定义一个生成器的函数;with后面跟这个函数,他会执行yield之前的代码;然后跳出来,执行with语句下面的代码,然后再切换回函数,执行finally后面的代码。


比如

importcontextlib@contextlib.contextmanagerdefworker_state(state_list,worker_thread):state_list.append(worker_thread)try:yieldfinally:state_list.remove(worker_thread)print(state_list)free_list=[]current_thread="alex"withworker_state(free_list,current_thread):print(123)print(456)print(free_list)----------123456[‘alex‘][]


例2 如果with后面跟个as,我们可以通过yield传递一个对象到as上面,比如下面我就把一个列表对象传给了tt

importcontextlibimportsocket@contextlib.contextmanagerdeftest(num):a=[]a.append(num)try:yieldafinally:num+=100print(num)withtest(20)astt:print(tt)------------[20]120

本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1870150

Python 学习笔记 - 上下文

评论关闭