在MATLAB中,可以使用类似
的内容创建function handles
myfun=@(arglist)body
通过这种方式,您可以随时创建功能,而无需创建M文件。
在Python中是否有一种等效的方法可以在一行中声明函数和变量并在以后调用它们?
答案 0 :(得分:15)
Python的lambda函数有点类似:
In [1]: fn = lambda x: x**2 + 3*x - 4
In [2]: fn(3)
Out[2]: 14
但是,只需将fn()
定义为函数即可实现类似的效果:
In [1]: def fn(x):
...: return x**2 + 3*x - 4
...:
In [2]: fn(4)
Out[2]: 24
“Normal”(与lambda相对)函数更灵活,因为它们允许条件语句,循环等。
没有要求将功能放在专用文件或其他任何性质的文件中。
最后,Python中的函数是第一类对象。这意味着,除其他外,您可以将它们作为参数传递给其他函数。这适用于上面显示的两种类型的函数。
答案 1 :(得分:10)
这不完全是答案。在matlab中,可以创建一个名为funct.m的文件:
function funct(a,b)
disp(a*b)
end
在命令行:
>> funct(2,3)
6
然后,可以创建一个函数句柄,例如:
>> myfunct = @(b)funct(10,b))
然后就可以做到:
>> myfunct(3)
30
完整的答案将告诉如何在python中执行此操作。
以下是如何操作:
def funct(a,b):
print(a*b)
然后:
myfunct = lambda b: funct(10,b)
最后:
>>> myfunct(3)
30
答案 2 :(得分:0)
事实证明,有一些东西一直回到2.5,称为function partials,它几乎与函数句柄完全相似。
http.request