If you check the type of h with type(h), it comes back as
<type 'sage.symbolic.expression.Expression'>

which is not numeric but symbolic. You can convert it to a numeric value with n(h) or h.n() and then the substitution will give zero as expected.