您的位置:首页 > 编程语言 > Python开发

Python 学习笔记 - 上下文

2017-04-13 00:00 351 查看
Python里面有个特殊的模块叫做上下文模块,可以和with搭配来实现一些功能。

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

比如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
importcontextlib
@contextlib.contextmanager
defworker_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"

withworker_state(free_list,current_thread):
print(123)
print(456)
print(free_list)
----------
123
456
['alex']
[]
例2如果with后面跟个as,我们可以通过yield传递一个对象到as上面,比如下面我就把一个列表对象传给了tt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
importcontextlib
importsocket

@contextlib.contextmanager
deftest(num):
a=[]
a.append(num)
try:
yielda
finally:
num+=100
print(num)

withtest(20)astt:
print(tt)
------------
[20]
3ff0 120
登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~



本文出自“麻婆豆腐”博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1870150
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: