Appendix A. Callbacks
The concept of callbacks and passing functions around may be foreign to you. If so, it is definitely worth digging into so that you understand it well enough to use it, or at the very least, understand what is going on when you see it being used. In Python, functions are âfirst class,â which means that you can pass them around and treat them as objectsâbecause they really are objects. See Example A-1.
Example A-1. Showing functions as first class
In [1]: def foo(): ...: print foo ...: ...: In [2]: foo Out[2]: <function foo at 0x1233270> In [3]: type(foo) Out[3]: <type 'function'> In [4]: dir(foo) Out[4]: ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
Simply referring to a function, such as foo
in the previous example, does not call it.
Referring to a functionâs name lets you get at any attributes the function
has and to even refer to the function by a different name later. See Example A-2.
Example A-2. Referring to functions by name
In [1]: def foo(): ...: """this is a docstring""" ...: print "IN FUNCTION FOO" ...: ...: In [2]: foo Out[2]: <function foo at 0x8319534> In [3]: foo.__doc__ Out[3]: 'this is a docstring' In [4]: bar = foo In [5]: bar Out[5]: <function foo at 0x8319534> ...
Get Python for Unix and Linux System Administration now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.