text: """
  Understanding Args and Kwargs
  
  What will be the output from the following function calls
  """
  
  def f(x, y, z):
      # uncomment for debug
      # print "x=%s y=%s, z=%s" % (x, y, z)
      return (x + y) / float(z)
  
  print(f(10, 5, 3))
  
  x = 20
  y = 10
  z = 3
  
  # using kwargs
  print(f(x=x, y=y, z=z))
  
  # using args and kwargs
  print(f(y, x, z=2))
  
  # using args and kwargs out of order
  print(f(z=3, y=x, x=y))
  
  # all x
  print(f(z=x, y=x, x=x))
  
  """
  With defaults
  """
  
  def ff(x=20, y=10, z=3):
      # uncomment for debug
      # print "x=%s y=%s, z=%s" % (x, y, z)
      return (x + y) / float(z)
  
  print(ff(10, 5, 3))
  
  # using args
  print(ff(10))
  
  # using kwargs
  print(ff(z=10))
  
  x = 20
  print(ff(z=x, y=x))
  
  
  