There is an explicit check for --locale: https://github.com/django/django/blob/master/django/core/management/commands/makemessages.py#L274. I could have done the same - leave None as default, and the explicitly check that the value is not None. However I think empty list as default works better here. Apart from the fact that it does not require any explicit checking, an empty list is also a more logical choice (this parameter is a list of locales to include/exclude - if there are none specified, we should get an empty list.