If there were only one pattern i.e.

    (r"^person/(?P<slug>[-\w]+)/(?P<active_tab>[-\w]*)/?$", "person", {}, "contact_person_tab")

then calling 

    reverse("contact_person_tab", kwargs={"slug":"foo","active_tab":"bar"})

would return `'/person/foo/bar'`, but calling

    reverse("contact_person_tab", kwargs={"slug":"foo"})

would return `NoReverseMatch`

OTH calling

    reverse("contacts_and_people.views.person", kwargs={"slug":"foo"})

would return `'/person/foo'`, so if the view name is used instead of the pattern name optional arguments are resolved correctly.