In [1]: def enc1(val):
...: try:
...: return val.encode('utf-8')
...: except AttributeError:
...: return val
...:
...:
In [2]: def enc2(val):
...: return (val.encode('utf-8') if isinstance(val, unicode) else val)
...:
In [8]: %timeit enc1('asdasd')
100000 loops, best of 3: 2.42 µs per loop
In [9]: %timeit enc1(u'asdasd')
100000 loops, best of 3: 2.27 µs per loop
In [10]: %timeit enc1(datetime.datetime.now())
100000 loops, best of 3: 13.5 µs per loop
In [11]: %timeit enc2('asdasd')
1000000 loops, best of 3: 1.45 µs per loop
In [12]: %timeit enc2(u'asdasd')
100000 loops, best of 3: 2.72 µs per loop
In [13]: %timeit enc2(datetime.datetime.now())
100000 loops, best of 3: 8.84 µs per loop