Because we want our code to be as correct as possible, and that means using unicode everywhere by default. The fact that `vars()` can't handle unicode objects and can only take bytestrings is a fault of Python 2 -- converting to a bytestring is not so terrible.