Python,对一个字符串'return'运行exec()来退出一个函数或线程
问题描述:
我想在我的函数中对'return'执行exec(),以便我的函数返回并停止,这里是我的代码:Python,对一个字符串'return'运行exec()来退出一个函数或线程
def Function():#recieves time consuming function to do
#checks if main thread should be closed, if so returns:
return 'return "it worked"'
#otherwise returns 'Null' so main thread keeps going
def MainThread():
#Wants to do some function, so
exec(Function())
return "didnt work"
当我运行MainThread(),它说:
SyntaxError: 'return' outside function
而且我不知道什么是错在那里,我已经简化了一下,发现运行EXEC(“回归”)也将不能在一个函数中工作。
为什么我要这么做: 我有一个控制乐器的线程,在它发送给乐器的每个命令之前,我都希望它检查它是否应该中止,因为控制乐器可能很耗时,而且有安全隐患。我不想通过我的代码多次复制粘贴if语句,所以想到用命令将每个命令包装到仪器中。 这似乎很混乱,如果有其他方法我很乐意听到。 我目前的解决办法是:
def Function(stuff):#recieves time consuming function to do
#does things to stuff
return
def check(thing,skip):
if skip==true:
return
else:
Function(thing)
return
def MainThread():
skip = False #will be true or false if need to skip
#Wants to do some function, so
check("the thing to do",skip)
如果它必须放弃线程,它实际上只是跳过通过,并在每个函数什么都不做。在线程的最后是中止,但我不喜欢简单地保持线程没有做什么,并希望有一个更好的主意:)
'返回'没有正确缩进......这就是为什么你得到这个错误。此外,请避免使用'exec'函数(请参阅[这里](http://lucumr.pocoo.org/2011/2/1/exec-in-python/)) –
好的,谢谢,示例代码有问题,(试图解决如何编辑它)顶部函数应该是不缩进的。你是这个意思吗?因为它还说说外部功能。 – maor