'Convert a Poly instance to an Expr instance.
Examples
>>> from sympy import Poly
>>> from sympy.abc import x, y
>>> f = Poly(x**2 + 2*x*y**2 - y, x, y)
>>> f.as_expr()
x**2 + 2*x*y**2 - y
>>> f.as_expr({x: 5})
10*y**2 - y + 25
>>> f.as_expr(5, 6)
379'

def as_expr(f, *gens):

    if (not gens):
        gens = f.gens
    elif ((len(gens) == 1) and isinstance(gens[0], dict)):
        mapping = gens[0]
        gens = list(f.gens)
        for (gen, value) in mapping.items():
            try:
                index = gens.index(gen)
            except ValueError:
                raise GeneratorsError(("%s    doesn't    have    %s    as    generator" % (f, gen)))
            else:
                gens[index] = value
    return basic_from_dict(f.rep.to_sympy_dict(), *gens)
