code: def function_name(fn):
  		
  		fn_name = fn.__name__
  		if hasattr(fn, '__qualname__'):
  			return fn.__qualname__
  		elif hasattr(fn, '__self__'):
  			owner = fn.__self__
  			if isclass(owner) is False:
  				owner = owner.__class__
  			return '%s.%s' % (owner.__name__, fn_name)
  		return fn_name
docs: Return function name in pretty style
  
  		:param fn: source function
  		:return: str