.. _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. ``lambda`` is a special way of creating small, single-line functions. The format of the lambda is:: lambda : To define a function that returns ``2*x`` for any input ``x``, rather than:: def f(x): return 2*x Although lambda functions are *anonymous functions*, this doesn't mean that you can't give it a name. We can define ``f`` via:: >>> f = lambda x: 2*x A lambda expression can also have a list:: >>> f = lambda: [x**2 for x in range(10)] >>> f() [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] You can also define functions of more than one variable, e.g.:: >>> g = lambda x,y: 2*(x+y) A lambda function can be called after it is defined:: >>> (lambda x, y=10: 2*x + y) (42) 94 A more complicated example which uses a lambda function as a keyword argument (i.e., ``f=lambda...``) in another function ``func``:: >>> def func(vals, f=lambda x: sum(x)/len(x)): f(vals) >>> func([1,2,3,4,5]) 3 .. note:: The lambda notation is one of the built-in Python keywords :ref:`ch03-python-keywords`, which means importing NumPy is *not* needed to use it. .. note:: One thing you notice here is that the keyword argument ``f=...`` is supplied optionally. If there are multiple keyword arguments, they may be called in any order and are not restricted to the order in which they were originally defined.