.. _python_functions:
=============================================================
Python functions
=============================================================
Functions are easily defined in Python using *def*, for example::
>>> def myfcn(x):
... import numpy as np
... y = np.cos(x) * np.exp(x)
... return y
...
>>> myfcn(0.)
1.0
>>> myfcn(1.)
1.4686939399158851
As elsewhere in Python, there is no begin-end notation except the
indentation. If you are defining a function at the command line as above,
you need to input a blank line to indicate that you are done typing in the
function.
Defining functions in modules
-----------------------------
Except for very simple functions, you do not want to type it in at the
command line in Python. Normally you want to create a text file containing
your function and import the resulting module into your interactive session.
If you have a file named *myfile.py* for example that contains::
def myfcn(x):
import numpy as np
y = np.cos(x) * np.exp(x)
return y
and this file is in your Python search path (see :ref:`python_path`), then
you can do::
>>> from myfile import myfcn
>>> myfcn(0.)
1.0
>>> myfcn(1.)
1.4686939399158851
In Python a function is an object that can be manipulated like any other
object.
.. _lambda_functions:
Lambda functions
----------------
Some functions can be easily defined in a single line of code, and it is
sometimes useful to be able to define a function "on the fly" using "lambda"
notation. To define a function that returns 2*x for any input x, rather
than::
def f(x):
return 2*x
we could also define *f* via::
f = lambda x: 2*x
You can also define functions of more than one variable, e.g.::
g = lambda x,y: 2*(x+y)
Further reading
---------------