I don't think this is the correct solution.  If `rcParams` ever changes between subsequent calls to `grid`, `which` doesn't update:

```python
In [1]: a = {'key': 1}

In [2]: a
Out[2]: {'key': 1}

In [3]: def f(a=a['key']):
   ...:     print a
   ...:

In [4]: f()
1

In [5]: a['key'] = 2

In [6]: f()
1
```

Perhaps have `which=None` and have some logic inside grid to use the default value if `which == None`.

Does that make sense?