def num_fmt(num, max_digits=None):
    r
    if num is None:
        return 'None'
    def num_in_mag(num, mag):
        return mag > num and num > (-1 * mag)
    if max_digits is None:
        if num_in_mag(num, 1):
            if num_in_mag(num, .1):
                max_digits = 4
            else:
                max_digits = 3
        else:
            max_digits = 1
    if util_type.is_float(num):
        num_str = ('%.' + str(max_digits) + 'f') % num
        num_str = num_str.rstrip('0').lstrip('0')
        if num_str.startswith('.'):
            num_str = '0' + num_str
        if num_str.endswith('.'):
            num_str = num_str + '0'
        return num_str
    elif util_type.is_int(num):
        return int_comma_str(num)
    else:
        return '%r'