我是Python的新手,我正在为我的Raspberry Pi创建一个转换器来获取输入,然后用LED输出摩尔斯电码。我有一个功能,将准确输出我选择的字母摩尔斯电码。我试图将带有参数的函数分配给变量,以便更快地访问。 a=letter(dot, dash)
但是当我尝试将它存储为运行具有这些参数的函数时,我也无法用类似()来调用它。可能有一个简单的解决方案,但我似乎无法弄明白。如果需要更多信息,我可以给你。谢谢你的帮助。
答案 0 :(得分:1)
是的,您可以使用partial
:
from functools import partial
a = partial(letter, dot, dash)
Partial构造一个新函数。如果调用该函数,它将使用letter
和dot
调用dash
。如果您使用参数调用a
,则会在末尾添加这些参数(未命名参数),并更新命名参数。
答案 1 :(得分:1)
你需要什么称为currying,绑定参数返回新函数的函数。或部分申请。哪个是您问题的解决方案:
from functools import partial
a = partial(func, arg1, arg2)
答案 2 :(得分:1)
您可以将变量设置为函数,然后将该变量用作函数的名称。这是一个例子:
def cube(number):
return number ** 3
make_cube = cube # Take out those parentheses
现在,变量make_cube
可以用作函数,如下所示:
print(make_cube(2))
# 8
cube
和make_cube
都指向相同的内存地址,您可以使用id(make_cube) == id(cube)
确认。
在您的情况下,它可以是:
a = letter
a(dot, dash)
答案 3 :(得分:0)
您还可以将函数表达式编写为字符串,稍后使用eval编写。
a = "letter(dot, dash)"
eval(a)
(不需要导入模块)