def show_(*args, **kwargs):
    """show_('x', 'y', z='z') # print names & values of arguments
    values of args and kwargs are expressions to be evaluated in context of the caller
    values of args become names to be displayed
    names of kwargs become names to be displayed
    """
    import miscutils.insp as insp
    from peepshow.core import show as core
    from peepshow.utils import python as utils
    env = utils.caller_gloloc()
    if args or kwargs:
        names = [*args] + [*kwargs.keys()]
        exprs = [*args] + [*kwargs.values()]
        for expr in exprs:
            if not isinstance(expr, str):
                raise TypeError('Each expression must be a string.')
        values = [eval(expr, env.glo, env.loc) for expr in exprs]
    else:
        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)
