Tell me more ×  What is the proper way to use **kwargs in Python
when it comes to default values?  kwargs returns a dictionary,
but what is the best way to set default values, or is there one?
Should I just access it as a dictionary? Use get function?
class ExampleClass:     def __init__(self, **kwargs):
self.val = kwargs['val']         self.val2 = kwargs.get('val2')
A simple question, but one that I can't find good resources on.
People do it different ways in code that I've seen and it's hard
to know what to use.  share|improve this question add comment
10 Answers  up vote 128 down vote accepted  You can pass a
default value to get() for keys that are not in the dictionary:
self.val2 = kwargs.get('val2',"default value")  However, if you
plan on using a particular argument with a particular default
value, why not use named arguments in the first place?  def
__init__(self, val2="default value", **kwargs): share|improve
this answer I like to use positional arguments only for required
arguments, and