来自官方文档 https://docs.python.org/3/reference/compound_stmts.html#function-definitions:
程序员注:函数是一等对象。在函数定义内执行的“def”语句定义了一个可以返回或传递的本地函数。嵌套函数中使用的自由变量可以访问包含 def 的函数的局部变量。
所以,函数是一个对象:
>>> f.__class__
<class 'function'>
>>> f.__class__.__mro__
(<class 'function'>, <class 'object'>)
...这意味着它可以存储属性:
>>> f.__dict__
{'language': 'Python', 'author': 'sunder'}
>>> dir(f)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'author', 'language']