Python 学习笔记 - 上下文,,Python里面有个
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 学习笔记 - 上下文
评论关闭