Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用ReturnValue时出现扭曲异常_Python_Twisted - Fatal编程技术网

Python 使用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

我在函数中使用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/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是正常的