mysql创建索引语句角色名为manager的语句是什么

With语句以及@contextmanager的语法解析 - 3Days - 博客园
with 语句以及@contextmanager的语法解析with语句可以通过很简单的方式来替try/finally语句。 with语句中EXPR部分必须是一个包含__enter__()和__exit__()方法的对象,也就是Context Manager。使用with语句的目的:提供可靠的资源自动释放,在with代码执行前请求资源,代码运行结束后资源会释放。简化代码,代码可读性以及逻辑的简明都会提高很多。创造临时的上下文环境,例如做一个临时的网络请求并获取返回值作为上下文环境。通过contextmanager和generator创造线程操作异步所。下述例子描述with...as语句的实现原理:
EXPR = open('/var/log/test.log')with EXPR as VAR:
data = VAR.read(50)
print data
实现原理:在with语句中, EXPR必须是一个包含__enter__()和__exit__()方法的对象(Context Manager)。调用EXPR的__enter__()方法申请资源并将结果赋值给VAR变量。通过try/except确保代码块BLOCK正确调用,否则调用EXPR的__exit__()方法退出并释放资源。在代码块BLOCK正确执行后,最终执行EXPR的__exit__()方法释放资源。
import sysEXPR = open('/var/log/test.log')EXIT = type(EXPR).__exit__ VAR = type(EXPR).__enter__(EXPR)EXC = Truetry:
data = VAR.read(50)
print data
EXC = False
if not EXIT(EXPR, *sys.exc_info()):
raisefinally:
EXIT(EXPR, None, None, None)
EXPR可以使用with语句的前提,必须是一个包含__enter__()和__exit()__方法的对象(Context Manager),最直接的方式是声明一个对象,在__enter__()方法里面申请资源,在__exit__()方法里面释放资源;EXPR返回此对象。更通用和更高效的将普通的函数转变为包含__enter__()和__exit__()方法的对象的方法是:通过一个特定的decorator(@contextmanager)扩展该函数并将函数声明为非循环的单一返回值的generator。generator可以将函数变成类似于iterator,每次调用好像通过iterator的next逐步读取,而不是一次返回。比实现一个iterator简单,iterator需要实现__init__,__iter__,__next__函数。比将结果一次返回(全部读取到内存中)要节省内存,通过next可以逐步获取需要的值。@contextmanagerdecorator的实现原理:声明contextmanager的decorator函数。参数是generator,返回值是一个接受和generator函数同样参数并且将generaor函数和参数传递到Context Manager构造函数并返回Context Manager对象的函数。绕死了!!!decorator函数,是接受函数作为参数,并且返回一个函数的的函数。当对函数func进行此修饰时相当于对func进行一次转变: func = decorator(func),在这里generator被修饰后变成了help(*args, **kwargs)函数在__enter__()方法中使用generator的next()方法获取第一个返回值。如果gen并不是generator函数,抛出一个runtime异常。在__exit__()方法中,如果存在异常将异常跑出,否则继续调用generator的next()方法。因此generator是一个具有唯一值非loop的generator因此会抛出stopiteration异常(正常预期值),否则抛出一个runtime异常。
class GeneratorContextManager(object):
def __init__(self, gen):
self.gen = gen
def __enter__(self):
return self.gen.next()
except StopIteration:
raise RuntimeError("generator didn't yield")
def __exit__(self, type, value, traceback):
if type is None:
self.gen.next()
except StopIteration:
raise RuntimeError("generator didn't stop")
self.gen.throw(type, value, traceback)
raise RuntimeError("generator didn't stop after throw()")
except StopIteration:
return True
if sys.exc_info()[1] is not value:
raisedef contextmanager(func):
def helper(*args, **kwds):
return GeneratorContextManager(func(*args, **kwds))
return helper
上述并没有涉及到资源的申请和释放,因此在generator函数里面,第一个loop即__enter__()函数调用时,进行资源的申请,第二个loop也就是__exit__()函数调用时抛出异常进入finally模块释放资源。下面是应用示例:
@contextmanagerdef opening(filename):
f = open(filename)
如上所述,就是with语句以及contextmanager decorator修饰器的语法解析。标准库里有些对象已经是context manager了,例如:
- thread.LockType
- threading.Lock
- threading.RLock
- threading.Condition
- threading.Semaphore
- threading.BoundedSemaphore
另外我们也可以通过contextlib.contextmanager来修饰我们的generator函数,作为context manager使用在with语句中。关于V.ing开头的句子像这句“Arranging department manager’s weekly schedule.”如果直接arrange开头可以吗~为什么要要加ing呢?动词加ing或不加ing作句子开头的情况好像都遇过~有什么区别嘛?
加了ing的变成了动名词,用做句子主语.不加的好多情况下时祈使句.例如:open the door.
为您推荐:
其他类似问题
扫描下载二维码数据库实验1~5_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据库实验1~5
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩41页未读,继续阅读
你可能喜欢高频词,一定要记得哦!
英['maen?d??]
美['maen?d??r]
n. 经理,当家人,演出人,干事,管理系统
Frankly I can't imagine how any manager could afford to get rid of it.
坦率地说我不能想象哪个经理能摆脱得了它。
He is incompetent as manager of the hotel.
他没有能力当那家旅馆的经理。
The master commended the dishonest manager because he had acted shrewdly.
主人夸奖这不义的管家做事聪明。
There was not red-headed to be seen except my own and that of the manager.
除我自己和那个干事外,再见不到一个红头发的人了。
Guest can deposit valuables with the manager for safe-keeping.
客人可以把贵重物品交给安全保管员照管。
1.someone who controls resources and expenditures
2.(sports) someone in charge of training an athlete or a team
只有登录后,才能查看此项,现在是否?
1.The manager threatened his employee with dismissal.
经理威胁他的雇员说要解雇他。
2.He is a manager of the company.
他是这家公司的经理。
3.The manager exalted many of his friends.
经理提拔了他的许多朋友。
4.The manager wants to review the project.
经理想要重新审查一下这个项目。
5.The manager allocates duties to the clerks.
经理为店员分配工作。
好文推荐:

我要回帖

更多关于 oracle创建表空间语句 的文章

 

随机推荐