def show(*args, **kwargs):
    """show(x, y, z=z) # print names & values of arguments
    names of args will be determined only if possible
    names of kwargs will be known as it is explicitely given
    """
    import miscutils.insp as insp
    from peepshow.core import show as core
    from peepshow.utils import python as utils
    if args or kwargs:
        if args:
            names = utils.arg_names()
        else:
            names = []
        names += [*kwargs.keys()]
        values = [*args] + [*kwargs.values()]
    else:
        env = utils.caller_gloloc()
        is_user_var = lambda item: not insp.isaccess(item[0]).special
        user_vars = filter(is_user_var, env.initial.items())
        names, values = zip(*user_vars)
    core.show(names, values)
