rangeの文字版c_rangeを書いた(binasciiの使用例)

Python Learners!で教えて貰ったのですが、rubyだと"('!' .. '?').each{ |e| print e, ' ' }"で、"! \ " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?"を書きだすことができるんだとか。rubyは数字も文字の場合も扱えるのでPythonのrangeより賢いじゃないですか。とりあえず、Pythonでrangeの文字列版c_rangeを作ってみました。

#!/usr/bin/env python2.6
import binascii

def c_range(begin, end):
  b_int = int(binascii.hexlify(begin), 16)
  e_int = int(binascii.hexlify(end), 16)
  for i in range(b_int, e_int+1):
    yield binascii.unhexlify(hex(i)[2:])

binasciiとかはじめて使いました。もっと賢い書き方があったら教えてください。