通过 ``装饰器`` 打印函数 ``参数, 运行时间, 返回值`` 等信息

    -  如果 ``prt(show==True)`` 打印函数信息,
    -  否则, 不做任何处理

    .. code:: python

        @prt(True)
        def say():
            print 'say'

        '''
        hello, world
        ----------------------------------------------------------------
        function(say) :
            arguments        = (),{}
            return           = None
            cost             = 0.000015 sec
        ----------------------------------------------------------------
        '''


        @prt(False)
        def say():
            print 'say'

        # 输出 hello, world

    -  定义一个全局变量 ``bl`` (调试模式设置为 ``True``, 在生产模式为
       ``False``)

    .. note: 调试模式, 设置为 True, 在生产模式时, 设置为False

    :param show: ``True/False``
    :type show: bool

def prt(show=False):
    """
    通过 ``装饰器`` 打印函数 ``参数, 运行时间, 返回值`` 等信息

    -  如果 ``prt(show==True)`` 打印函数信息,
    -  否则, 不做任何处理

    .. code:: python

        @prt(True)
        def say():
            print 'say'

        '''
        hello, world
        ----------------------------------------------------------------
        function(say) :
            arguments        = (),{}
            return           = None
            cost             = 0.000015 sec
        ----------------------------------------------------------------
        '''


        @prt(False)
        def say():
            print 'say'

        # 输出 hello, world

    -  定义一个全局变量 ``bl`` (调试模式设置为 ``True``, 在生产模式为
       ``False``)

    .. note: 调试模式, 设置为 True, 在生产模式时, 设置为False

    :param show: ``True/False``
    :type show: bool
    """

    def dec(fn):
        @wraps(fn)
        def wrapper(*args, **kwargs):
            result = None
            ts = time.time()
            if show:
                try:
                    result = fn(*args, **kwargs)
                except Exception as e:
                    print(e)
                finally:
                    te = time.time()
                    print("-" * 64)
                    print("function({}) :".format(fn.__name__))
                    print("\t{:<16} = {},{}".format('arguments', args, kwargs))
                    print("\t{:<16} = {}".format('return', result))
                    print("\t{:<16} = {:.6f} sec".format('cost', te - ts))
                    print("-" * 64)
                    return result
            else:
                return fn(*args, **kwargs)

        return wrapper

    return dec