[英]How to call a function whose name is given by the user through Python dictionary w/o if-elif statements
我正在嘗試編寫一個程序,向用戶請求命令和一堆 arguments 並執行它。 此外,嘗試通過使用 python 字典來提高效率。 這是我的代碼:
command, *args = input().split()
args = list(map(int, args))
options = {'a': print(args[0]),
'b': print(args[1]),
}
options.get(command)
但是,當我在輸入中輸入'a 1 2'時,程序會同時編譯命令 a和命令 b 。 這是為什么? 我可以修好嗎? 先感謝您!
正如有人指出的那樣,您可以使用eval
。 然而,更好的方法是將函數作為值傳遞到字典中並在檢索期間調用它們。 最簡單的方法是使用lambda
創建一個簡單的內聯 function。
使用您的代碼,這將類似於:
command, *args = input().split()
args = list(map(int, args))
options = {'a': lambda args: print(args[0]),
'b': lambda args: print(args[1]),
}
options.get(command)(args)
如果您不熟悉 lambda 表達式,它只是創建簡單函數的一種更簡單的方法。 例如lambda args: print(args[1])
評估為
def func(args):
print(args[1])
您的問題可以通過以下方式回答:
command, *args = input().split()
args = list(map(int, args))
options = {'a': (print, args[0]),
'b': (print, args[1]),
}
func, arg = options.get(command)
func(arg)
現在,輸入b 123 23
23
只打印 23。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.