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.

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 *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.

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)
```