what is used in python functions if youbhva eno idea about the number of the arguments to be passd code example

Example 1: python function arguments

#*args and **kwargs are normally used as arguments when calling the function.

#*args returns as tuple and **kwargs returns as dictionary.

#*args and **kwargs  let you write functions with variable number of arguments in python.

def func(required,*args,**kwargs):
    return f"{required} {args} {kwargs}"
  
func("Nagendra",5,32,2,1,23,) #output == 'Nagendra (5, 32, 2, 1, 23) {}'
func("Nagendra",5,32,2,1,23,key1="55",key2="75") #output == "Nagendra (5, 32, 2, 1, 23) {'key1': '55', 'key2': '75'}"

#Very understable example of args.
#Given n number of arguments in a function calculate its average
def average(*args):
  '''
  As we already know *args means collection of values in a tuple.
  INPUT: arguments are given. example average(4,10,) 
  OUTPUT: average of two numbers (4+10)/2 == 14
  '''
  return sum(args)/len(args)

average(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) #output == 8.0

Example 2: optional arguments python

def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
    #code