2012-08-10 77 views
2

我想知道什么是检查Python定义中的条件的最佳方法,并且在条件不满足的情况下阻止它进一步执行。现在我遵循下面提到的方案,但它实际上打印整个跟踪堆栈。我希望它仅打印一条错误消息,而不要执行其余的代码。有没有其他更干净的解决方案来做到这一点。防止执行python定义

def Mydef(n1,n2): 
    if (n1>n2): 
     raise ValueError("Arg1 should be less than Arg2) 
    # Some Code 


Mydef(2,1) 
+2

只是澄清:你的问题是一个未捕获的异常打印回溯,对吧?这是一个什么问题? – 2012-08-10 11:02:07

+0

实际上,这个定义是在一个文件中定义的,该文件在Python交互式shell中作为模块导入。我只是简单地想要这个,如果用户正在使用函数的错误值,它应该停止它的执行,并只打印一行错误消息,而不是跟踪堆栈 – sarbjit 2012-08-10 11:04:40

回答

2

也就是说有例外情况存在创造了什么。你提出例外的方案总的来说是好的;你只需要添加一些代码来抓住它和处理它

try: 
    Mydef(2,1) 
except ValueError, e: 
    # Do some stuff when exception is raised, e.message will contain your message 

在这种情况下,当它遇到提高代码ValueError异常行,并且去,除了下的代码块Mydef的停止执行。

您可以在documentation中了解有关异常处理的更多信息。

如果您不想处理异常处理,您可以优雅地停止功能,以执行与返回声明的更多代码。

def Mydef(n1,n2): 
    if (n1>n2): 
     return 
0
def Mydef(n1,n2): 
    if (n1>n2): 
     print "Arg1 should be less than Arg2" 
     return None 
    # Some Code 


Mydef(2,1) 

功能停止时,他们到达return语句执行或它们运行直到定义结束。你应该一般阅读flow control(不是专门为python)