我遇到一個有趣的問題:
我們以這樣一個函式為例:
def SumNumbers(a,b,c,d,e,f):
try:
print("Marta: ",
a," ",b,' ',c,' ',d,' ',e,' ',f,
'=',
a b c d e f)
except TypeError:
print("Enter the values for the 6 parameters of the program")
在這種情況下我們如何處理此錯誤:
SumNumbers(1,2,3)
在這種情況下:
SumNumbers(1,2,3,4,5,5,6,77,7,8,88,8,8,8,8)
當然,我的意思是在函式體中處理這個錯誤:)
不幸的是,我攔截 TypeError 的嘗試無效:(
uj5u.com熱心網友回復:
我認為最好的辦法是使用裝飾器,您的例外發生在函式呼叫上,而不是在您嘗試列印時發生。這就是為什么您不排除錯誤的原因,因為您的錯誤發生在您的 try 陳述句之前。下面是一個例子:
def typeErrorException(func):
def inner(*nums):
try:
func(*nums)
except TypeError:
print("Invalid input")
return inner
@typeErrorException
def SumNumbers(a,b,c,d,e,f):
print("Marta: ",
a," ",b,' ',c,' ',d,' ',e,' ',f,
'=',
a b c d e f)
SumNumbers(1,2,3,4,5,6,7)
您的裝飾器在您的函式之前首先被呼叫,并使用給定的引數嘗試您的函式。這意味著您不必顯式嘗試,除非每次呼叫該函式時。
關于裝飾器的更多資訊:https : //realpython.com/primer-on-python-decorators/
uj5u.com熱心網友回復:
使用*args:
def SumNumbers(*args):
if len(args) != 6:
print("Enter the values for the 6 parameters of the program")
return
print(f"Marta: {' '.join(str(i) for i in args)} = {sum(args)}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/393655.html
下一篇:回傳兩種不同型別的函式
