我想創建一個函式,我們可以在其中將資訊指定為字串輸入。結果會因資訊而改變,如果資訊不正確可能會引發錯誤
我的意思是這樣的小例子:
def f(a,b,method='repartition uniforme'):
if method=='repartition uniforme':
return a b
if method=='repartition fin de ligne':
return a*b
else:
raise NameError('méthode de répartition des charge non valide')
創建這種功能的最佳和正確方法是什么?
uj5u.com熱心網友回復:
您的代碼很好,但有一個例外 - NameError 通常保留用于命名空間錯誤,而您想要的是 ValueError,它通常用于正確型別但超出預期范圍的引數值。
從 Python 3.10 開始,您可以使用 match 陳述句而不是鏈式 'if' 以使其更具可讀性。使用該語法,您的代碼將如下所示:
def f(a,b,method='repartition uniforme'):
match method:
case 'repartition uniforme':
return a b
case 'repartition fin de ligne':
return a*b
case _:
raise ValueError('méthode de répartition des charge non valide')
uj5u.com熱心網友回復:
您可以將函式存盤在字典中:
funcs = {
'repartition uniforme': lambda x, y: x y,
'repartition fin de ligne': lambda x, y: x * y
}
def f(a,b,method='repartition uniforme'):
try:
return funcs[method](a, b)
except KeyError:
raise NameError('méthode de répartition des charge non valide')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409634.html
標籤:
上一篇:從自定義深度的多維陣列中提取專案
下一篇:如何為R包中的函式引數設定別名?
