異常類型錯誤寫代碼我有一個功能,它看起來像這樣:在蟒蛇
def fun(a,b,c=None): pass
當我把這個功能在Python 3 fun(1)
,它給了我錯誤的TypeError: fun() missing 1 required positional argument: 'b'
這是可以理解的,但是當我在Python 2中調用這個函數,它給我錯誤爲TypeError: fun() takes at least 2 arguments (1 given)
。
所以我想在python 2中捕獲這個錯誤,因爲它在python 3中被捕獲而沒有切換到python 3.我如何實現這一目標?另外,如果我正在爲此編寫一個裝飾器,我需要保留裝飾器之外的函數簽名。
類型的錯誤沒有什麼不同,這是不同的信息。默認消息在'C'中定義,不能直接通過Python進行修改。您可以在Python 2中捕獲異常,並在Python 3中用類似的異常消息重新引發異常(但需要大量內省調用堆棧和函數對象以查找調用中缺少的參數)。 –
我是python的新手。你能建議我做點什麼嗎? @ JimFasarakis-Hilliard –
老實說?只是不要使用Python 2是最好的建議。因爲這個決定可能不是你自己決定的,不過,你總是可以看看stdlib中的'inspect'模塊,它提供了內省功能,可以幫助你解決你的問題。 –