Python 使用ReturnValue时出现扭曲异常
我在函数中使用returnvalue时遇到了这个异常Python 使用ReturnValue时出现扭曲异常,python,twisted,Python,Twisted,我在函数中使用returnvalue时遇到了这个异常 @inlineCallbacks def my_func(id): yield somefunc(id) @inlineCallbacks def somefunc(id): somevar = yield func(id) returnValue(somevar) returnValue(somevar) File "/usr/lib64/python2.7/site-packages/twisted/inte
@inlineCallbacks
def my_func(id):
yield somefunc(id)
@inlineCallbacks
def somefunc(id):
somevar = yield func(id)
returnValue(somevar)
returnValue(somevar)
File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1105, in returnValue
raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return:
该函数工作正常,但引发异常。
我怎样才能避免这个例外?我只需要从函数中返回一些值。当使用
内联回调时,您必须生成一个延迟的值-在这种情况下,您在my_func
中的yield
正在生成func(id)
(我假设是延迟的),但随后调用了returnValue
,这是不允许的
您可能可以执行以下操作:
@inlineCallbacks
def my_func(id):
somevar = yield somefunc(id)
@inlineCallbacks
def somefunc(id):
yield func(id)
returnValue
使用异常技巧返回值/s。
这是正常的,异常不会导致任何错误
详情:
@inlinecallback
装饰器看起来像
def decorator(...)
try:
.... (func call & other logics)
except Exception as myExcept:
return myExcept.values
看看这个例子,在与@inlineCallbacks修饰的同一个函数中yield和defer.returnvalue是正常的