Array of Functions
MRAB
python at mrabarnett.plus.com
Fri Nov 14 18:02:04 EST 2014
On 2014-11-14 22:17, Richard Riehle wrote:
> In C, C++, Ada, and functional languages, I can create an array of
> functions, albeit with the nastiness of pointers in the C family.
> For example, an array of functions where each function is an active
> button, or an array of functions that behave like formulae in a
> spreadsheet. I am finding this a bit challenging in Python.
>
> Example:
>
> r1c1 r1c2 r1c3
> r2c1 r2c2 r2c3
> r3c1 r3c2 r3c3
>
> where r1 is row 1 and c1 is column 1. Suppose I want an array where
> the colum three is a set of functions that operates on the other two
> columns, depending on the values I set for those rows and columns?
> As noted, I can do this pretty easily in most languages (well, except
> for Java which does not support any kind of functional programming
> capability), even if I have to use pointers.
>
> I think my difficulty is related to the REPL nature of Python.
> However, I am sure some clever Pythonista has found a way to do
> this.
>
> Thanks in advance for any suggestions,
>
In C, you're not creating an array of functions, but an array of
_pointers_ to functions.
In Python, we don't have pointers, but we do have references.
For example, you can define a function:
>>> def my_func():
... print('my_func called')
...
The name of the function is just a reference to that function:
>>> print(my_func)
<function my_func at 0x0000000002CBCBF8>
You call it using (...):
>>> my_func()
my_func called
You can store the reference in a list or bind another name to it:
>>> func_by_another_name = my_func
And call it by that other name:
>>> func_by_another_name()
my_func called
Does that help?
More information about the Python-list
mailing list