optional argument python

def myfunc(a,b, *args, **kwargs):
      c = kwargs.get('c', None)
      d = kwargs.get('d', None)
      #etc
myfunc(a,b, c='nick', d='dog', ...)

Here is what the above code is Doing:
1. The first two arguments are required, and are assigned to the variables a and b.
2. The args variable is created as an empty tuple.
3. The kwargs variable is created as an empty dictionary.
4. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
5. The args and kwargs variables are passed to the myfunc function.
6. The myfunc function is called with the values of a, b, c, and d.
7. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
8. The args and kwargs variables are passed to the myfunc function.
9. The myfunc function is called with the values of a, b, c, and d.
10. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
11. The args and kwargs variables are passed to the myfunc function.
12. The myfunc function is called with the values of a, b, c, and d.
13. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
14. The args and kwargs variables are passed to the myfunc function.
15. The myfunc function is called with the values of a, b, c, and d.
16. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
17. The args and kwargs variables are passed to the myfunc function.
18. The myfunc function is called with the values of a, b, c, and d.
19. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
20. The args and kwargs variables are passed to the myfunc function.
21. The myfunc function is called with the values of a, b, c, and d.
22. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
23. The args and kwargs variables are passed to the myfunc function.
24. The myfunc function is called with the values of a, b, c, and d.
25. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
26. The args and kwargs variables are passed to the myfunc function.
27. The myfunc function is called with the values of a, b, c, and d.
28. The c and d variables are assigned to the values of the c and d keys in the kwargs dictionary.
29. The args and kwargs variables are passed to the myfunc function.
30. The myfunc function is called with the values of a, b, c, and d.