Default values shouldn't have whitespace before them (use `max_repeat=0` instead of `max_repeat = 0`), and `n` is too short for a variable name (PEP-8). __More importantly__, default dictionary values are dangerous. In particular, dictionaries are mutable, and the default values are bound to the function at declaration time. For example, consider this function:

```python
def foo(defaults={'foo': 'bar'}):
    if len(defaults) == 1:
        print 'Length 1'
        defaults['whiz'] = 'bang'
    else:
        print 'Length 2'
```
If I invoke it twice, I'll get some surprising results:
```
>>> foo()
Length 1
>>> foo()
Length 2
```
That's because in the invocation we've actually changed the default values for subsequent runs. The way to achieve safety is:
```python
def __init__(self, limit, targets, fillers, lures=None, max_repeat=0):
    lures = lures or {1: 0}
    ...
```
There are a few types that are safe as default values because they're immutable. In particular, `tuple`, `None`, and numeric values.