'dog'for animal_type now when the function is called with no animal_type specifiedpython knows to use the value 'dogfor this parameteri have dog my dog' name is willie note that the order of the parameters in the function definition had to be changed because the default value makes it unnecessary to specify type of animal as an argumentthe only argument left in the function call is the pet' name python still interprets this as positional argumentso if the function is called with just pet' namethat argument will match up with the first parameter listed in the function' definition this is the reason the first parameter needs to be pet_name the simplest way to use this function now is to provide just dog' name in the function calldescribe_pet('willie'this function call would have the same output as the previous example the only argument provided is 'willie'so it is matched up with the first parameter in the definitionpet_name because no argument is provided for animal_typepython uses the default value 'dogto describe an animal other than dogyou could use function call like thisdescribe_pet(pet_name='harry'animal_type='hamster'because an explicit argument for animal_type is providedpython will ignore the parameter' default value note when you use default valuesany parameter with default value needs to be listed after all the parameters that don' have default values this allows python to continue interpreting positional arguments correctly equivalent function calls because positional argumentskeyword argumentsand default values can all be used togetheroften you'll have several equivalent ways to call function consider the following definition for describe_pets(with one default value provideddef describe_pet(pet_nameanimal_type='dog')with this definitionan argument always needs to be provided for pet_nameand this value can be provided using the positional or keyword functions