2012-08-10 61 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)