我制作了一个Python脚本,它根据用户的输入调用函数.到现在为止,我只是通过一个字典来调用无参数函数
options = { 0 : func0,
1 : func1,
2 : func2,
}
options[choice]()
Run Code Online (Sandbox Code Playgroud)
现在我处于需要使用参数调用一些函数的情况.我是Python的新手,我尝试过这样的东西
options = { 0 : (func0,None),
1 : (func1,None),
2 : (func2,foo1),
3 : (func3,foo2),
}
options[choice][0](options[choice][1])
Run Code Online (Sandbox Code Playgroud)
我知道为什么None在这里不起作用,并且只是为了表示该函数不带任何参数而编写它.我应该在代码中做出哪些更改,以便它适用于各种功能?
我试过拆包empty dict但它也不起作用.
Joh*_*ooy 26
None仍然是一个值,并将它传递给一个不期望参数的函数将无法正常工作.而是考虑partial在这里使用
from functools import partial
options = { 0: func0,
1: func1,
2: partial(func2, foo1),
3: partial(func3, foo2),
}
options[choice]()
Run Code Online (Sandbox Code Playgroud)
pha*_*t0m 18
使用参数列表:
options = { 0 : (func0, []),
1 : (func1, []),
2 : (func2, [foo1]),
3 : (func3, [foo2]),
}
options[choice][0](*options[choice][1])
# or
func, args = options[choice]
func(*args)
Run Code Online (Sandbox Code Playgroud)
如果您希望能够指定命名参数,可以像这样扩展它:
options = { 0 : (func0, [], {}),
1 : (func1, [], {param_name: value}),
2 : (print_name, [], {name: "nims"}),
3 : (func3, [foo2], {}),
}
func, args, kwargs = options[choice]
func(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1708 次 |
| 最近记录: |