'__repr__''__setattr__''__sizeof__''__str__''__subclasshook__'introspection tools allow us to explore implementation details too--functions have attached code objectsfor examplewhich provide details on aspects such as the functionslocal variables and argumentsfunc __code__ "line dir(func __code__['__class__''__delattr__''__dir__''__doc__''__eq__''__format__''__ge__'more omitted total 'co_argcount''co_cellvars''co_code''co_consts''co_filename''co_firstlineno''co_flags''co_freevars''co_kwonlyargcount''co_lnotab''co_name''co_names''co_nlocals''co_stacksize''co_varnames'func __code__ co_varnames (' '' 'func __code__ co_argcount tool writers can make use of such information to manage functions (in factwe will too in to implement validation of function arguments in decoratorsfunction attributes function objects are not limited to the system-defined attributes listed in the prior sectionthough as we learned in it' been possible to attach arbitrary userdefined attributes to them as well since python func func count func count + func count func handles 'button-pressfunc handles 'button-pressdir(func['__annotations__''__call__''__class__''__closure__''__code__'and morein all others have double underscores so your names won' clash __str__''__subclasshook__''count''handles'python' own implementation-related data stored on functions follows naming conventions that prevent them from clashing with the more arbitrary attribute names you might assign yourself in xall function internalsnames have leading and trailing double underscores ("__x__") follows the same schemebut also assigns some names that begin with "func_x" :\codepy - def ()pass advanced function topics