In MATLAB it is possible to create
function handles with something like
This way you can create functions on the go without having to create M-files.
Is there an equivalent way in Python to declare functions and variables in one line and to call them later?
Python's lambda functions are somewhat similar:
In : fn = lambda x: x**2 + 3*x - 4 In : fn(3) Out: 14
However, you can achieve similar effects by simply defining
fn() as a function:
In : def fn(x): ...: return x**2 + 3*x - 4 ...: In : fn(4) Out: 24
"Normal" (as opposed to lambda) functions are more flexible in that they allow conditional statements, loops etc.
There's no requirement to place functions inside dedicated files or anything else of that nature.
Lastly, functions in Python are first-class objects. This means, among other things, that you can pass them as arguments into other functions. This applies to both types of functions shown above.
This is not quite the full answer. In matlab, one can make a file called funct.m:
function funct(a,b) disp(a*b) end
At the command line:
>> funct(2,3) 6
Then, one can create a function handle such as:
>> myfunct = @(b)funct(10,b))
Then one can do:
>> myfunct(3) 30
A full answer would tell how to do this in python.
Here is how to do it:
def funct(a,b): print(a*b)
myfunct = lambda b: funct(10,b)
>>> myfunct(3) 30