[英]Why Python script with “terminal-notifier” isn't working with crontab in my case?
[英]My switch case system isn't working out in Python
我是 Python 的新手。 我最近了解到 python 沒有開關盒系統。 相反,程序員必須使用字典數據類型制作一個。
我想使用 switch case 制作一個菜單系統,代碼如下:
switch={'1':func1(),'2':func2()} #func1() and func2() are two separate functions (menu options)
choice= input('choice : ')
switch[choice]
好吧,在我的開關系統中,無論我輸入什么作為“選擇”, func1()都只運行。
任何幫助將不勝感激:)
不要將func1()
放入字典中,而是嘗試放入func1
(無括號)。
>>> switch = {'1' : func1, # No parentheses here
... '2' : func2 } # ...or here.
>>> choice = input('choice : ')
>>> switch[choice]() # But do put parentheses here.
通過將func1()
放入字典中,您實際上是在調用 function 並將其結果存儲在字典中。 相反,如果您想通過字典調用 function,則需要存儲 function句柄(其變量名)並在索引到switch
后調用它。
根據您的代碼,每次代碼運行時 func1 和 func2 都會運行。 問題是,當您聲明字典時,您正在執行/調用函數(因為在 function 名稱之后有()
,這就是“調用”函數的方式),而不僅僅是存儲對它們的鏈接/引用.
為了傳遞/存儲對 function 的引用而不調用它,只需鍵入其名稱,末尾不帶()
。 然后,要調用在變量/某處引用的 function,請添加括號。
這應該有效:
switch = {'1': func1, '2': func2} # func1() and func2() are two separate functions (menu options)
choice = input('choice : ')
switch[choice]()
請注意我是如何從第一行的函數中刪除()
的。 另請注意,在最后一行,我通過在末尾添加()
來調用存儲在switch
中的 function ,並帶有鍵choice
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.