They are optional from the user point of view in that if the user doesn't have to specify them because they have a default value. So yes, most keyword arguments are optional, except if you set the default to None and raise an error if the user doesn't change it. Optional doesn't mean the value is not important, but just that the user can not specify it and just go with the default.