GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python_test/test45.py at master · hnfurui/python_test Expand file tree/ Copy pathtest45.pyMore file actions 60 lines (39 loc) · 1.44 KB / Copy pathtest45.pyFile metadata and controls60 lines (39 loc) · 1.44 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #!/usr/bin/env python3 # -*- conding: utf-8 -*- '练习内建模块之contextlib' __author__ = 'sergiojune' import contextlib # 这个模块是用来设置上下文管理器的,里面有两个很好用的装饰器 import requests class Query(): def __init__(self, name): self.name = name def query(self): print('query data is %s' % self.name) @contextlib.contextmanager # 这个方法不是类的 def create_query(name): q = Query(name) yield q # 生成器,用with就是返回这个东西 print('end') # 当语句块执行完时就执行这个语句 with create_query('bob') as q: q.query() print('query end') # 可以用上面的装饰器实现在运行代码之前自动运行某些代码 class Html(object): def __init__(self, name): self.name = name def put_start(self): print('<%s>' % self.name, end='') def put_end(self): print('</%s>' % self.name) @contextlib.contextmanager def create(name): h = Html(name) h.put_start() yield h h.put_end() with create('h1') as h: print('我是标题', end='') # 如果一个对象没有实现上下文方法,我们还可以用colsing这个方法 with contextlib.closing(requests.get('https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001478651770626de401ff1c0d94f379774cabd842222ff000')) as f: print(f.text) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |