在MATLAB中,可以function handles使用类似的东西创建
myfun=@(arglist)body
Run Code Online (Sandbox Code Playgroud)
这样您就可以随时创建函数,而无需创建M文件.
在Python中是否有一种等效的方法来在一行中声明函数和变量并在以后调用它们?
NPE*_*NPE 15
Python的lambda函数有点类似:
In [1]: fn = lambda x: x**2 + 3*x - 4
In [2]: fn(3)
Out[2]: 14
Run Code Online (Sandbox Code Playgroud)
但是,通过简单地定义fn()为函数,您可以实现类似的效果:
In [1]: def fn(x):
...: return x**2 + 3*x - 4
...:
In [2]: fn(4)
Out[2]: 24
Run Code Online (Sandbox Code Playgroud)
"Normal"(与lambda相对)函数更灵活,因为它们允许条件语句,循环等.
没有要求将函数放在专用文件或其他任何性质的文件中.
最后,Python中的函数是第一类对象.这意味着,除其他外,您可以将它们作为参数传递给其他函数.这适用于上面显示的两种类型的功能.
aba*_*ter 10
这不是完整的答案.在matlab中,可以创建一个名为funct.m的文件:
function funct(a,b)
disp(a*b)
end
Run Code Online (Sandbox Code Playgroud)
在命令行:
>> funct(2,3)
6
Run Code Online (Sandbox Code Playgroud)
然后,可以创建一个函数句柄,例如:
>> myfunct = @(b)funct(10,b))
Run Code Online (Sandbox Code Playgroud)
然后人们可以这样做:
>> myfunct(3)
30
Run Code Online (Sandbox Code Playgroud)
一个完整的答案将告诉如何在python中执行此操作.
这是怎么做的:
def funct(a,b):
print(a*b)
Run Code Online (Sandbox Code Playgroud)
然后:
myfunct = lambda b: funct(10,b)
Run Code Online (Sandbox Code Playgroud)
最后:
>>> myfunct(3)
30
Run Code Online (Sandbox Code Playgroud)