2016-12-23 26 views
0

我想在我的函数中对'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) 

如果它必须放弃线程,它实际上只是跳过通过,并在每个函数什么都不做。在线程的最后是中止,但我不喜欢简单地保持线程没有做什么,并希望有一个更好的主意:)

+1

'返回'没有正确缩进......这就是为什么你得到这个错误。此外,请避免使用'exec'函数(请参阅[这里](http://lucumr.pocoo.org/2011/2/1/exec-in-python/)) –

+0

好的,谢谢,示例代码有问题,(试图解决如何编辑它)顶部函数应该是不缩进的。你是这个意思吗?因为它还说说外部功能。 – maor

回答

1

exec()不执行代码在它所在的函数的上下文中调用。 “return "it worked"”不会成为Function()的一部分,它会自行执行。

+0

好的,谢谢我现在就明白! – maor

相关问题