Functions Are Objects Too


Are functions objects in Python?



Yes, all functions are objects of "function" type in Python? You can verify this with the following Python code:

>>> def x():
...    print("Hello world!")
>>> type(x)
<class 'function'>

In other words, the "def x()" statement block performed two activities:

  • Creates a new "function" object and hiding its statement block inside.
  • Introduced a variable "x" to reference to the "function" object.

Like any other types of objects, you can use the "dir()" to list its members:

>>> def x():
...     print("Hello world!")
>>> dir(x)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', 
'__defau lts__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__',  '__ge__', '__get__', '__getattribute__', '__globals__', 
'__gt__', '__hash__', ' __init__', '__init_subclass__', '__kwdefaults__', 
'__le__', '__lt__', '__module_ _', 'Python Tutorials', '__ne__', '__new__', 
'__qualname__', '__reduce__', '__reduce_ex_ _', '__repr__', '__setattr__', 
'__sizeof__', '__str__', '__subclasshook__']

You can call (execute) the function object by call its "__call__()" function:

>>> def x():
...     print("Hello world!")
>>> x.__call__()
Hello world!


Defining Functions in Python

⇒⇒Python Tutorials

2017-09-09, 111👍, 0💬