假設我有 26 個函式,其中一個函式計算一些公式。我們稱它們為 function_a、function_b、...、function_z。
在我的主函式中,我需要根據給定的輸入選擇要使用的函式_{a...z}。
我寫了以下函式。
def main(input):
result = 0
if input == 'a':
result = function_a()
elif input == 'b':
result = function_b()
...
elif input == 'z':
result = function_z()
或者我有一個像下面這樣的長字典,并根據輸入選擇要使用的函式。
{'a': function_a, 'b': function_b, ... , 'z': function_z}
但是,有沒有更好的設計/結構?
提前致謝。
uj5u.com熱心網友回復:
Python 還有一個類似 switch-case 的結構,現在稱為match. 這不是一個全新的設計或結構,只是感覺更干凈一些。
def main(input):
result = 0
match input:
case 'a':
result = function_a()
case 'b':
result = function_b()
uj5u.com熱心網友回復:
即使考慮在 Python 3.10 中引入match陳述句,我發現字典方法對于簡單的場景也很有效。
添加新的“匹配/大小寫”塊就像添加另一個鍵值對一樣簡單。您甚至可以使用try/except塊來捕獲KeyError和處理無效輸入。
例子:
def main(input_string):
try:
result = {
'a': function_a,
'b': function_b,
# add other cases here
'z': function_z,
}[input_string]()
except KeyError:
print(f'Got an invalid input: {input_string}')
# ... etc
uj5u.com熱心網友回復:
您可以使用“getattr”,將所有函式添加到一個類中,并將這個類傳遞給 getattr 和字母:
class Definations:
def function_a():
return 'output: a'
def function_b():
return 'output: b'
def main(input):
obj = getattr(Definations, f'function_{input}')
return obj()
print(main('a'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512637.html
下一篇:如何讓我的程式讀取單詞的長度?
