[英]Using default arguments in a function with variable arguments. Is this possible?
[英]Is it possible to store a function and its arguments in a variable?
我已經看到很多關於將函數存儲在變量中以供執行的信息,但顯示的函數始終是:
def foo():
print("Hello")
x = foo
x()
種類。 是否可以存儲 function 及其變量以供以后執行? 我目前通過創建一個元組來解決這個問題,其中 function 作為第一項,變量作為第二項的嵌套元組,然后調用:
menu_input[KEY_D] = action_system.drop_item, (character,))
...LATER IN CODE...
for key in current_input:
if key in menu.menu_input.keys():
func, args = menu.menu_input[keys]
func(*args)
但我真的更希望能夠將 function 及其變量一起存儲。
我希望能夠存儲:
menu_input[KEY_D] = action_system.drop_item(character)
...LATER IN CODE...
for key in current_input:
if key in menu.menu_input.keys():
menu.menu_input[keys]()
因為處理菜單輸入的function不理解或關心菜單function本身,所以真的不需要看輸入或關心傳遞的arguments。
這可能嗎? 如果是這樣,我錯過了什么? 抱歉,如果這很明顯或顯然是個壞主意——對於 python 來說相對較新。 如果這是一個糟糕的主意,我很想知道為什么。 我避免將此設置為菜單項的 class function 因為我正在嘗試在實體組件系統 model 中工作,組件存儲所有數據和系統在它們上運行。
functools.partial
function 是為此目的而制作的:
from functools import partial
menu_input[KEY_D] = partial(action_system.drop_item, character)
...
for key in current_input:
if key in menu.menu_input:
menu.menu_input[key]()
您可以選擇使用沒有 arguments 的 lambda 表達式。
def foo(value):
print(value)
x = lambda : foo("Hello")
x()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.