lulus arg dan kwargs ke funcitons

#1. When used as part of a function definition
	def f(self, *args, **kwargs):
	
    #it is used to signify an arbitrary number of positional or 
	#keyword arguments, respectively. 
	#The point to remember is that inside the function args will be a tuple, 
	#and kwargs will be a dict.
#2. When used as part of a function call,
	args = (1, 2)
	kwargs = {'last': 'Doe', 'first': 'John'}
	self.f(*args, **kwargs)
	#the * and ** act as unpacking operators. 
    #args must be an iterable, and kwargs must be dict-like. 
    #The items in args will be unpacked and sent to the function 
    #as positional arguments, and the key/value pairs in kwargs 
    #will be sent to the function as keyword arguments. 
#Thus,
	self.f(*args, **kwargs)
#is equivalent to
	self.f(1, 2, last='Doe', first='John')
Real Raccoon