title: what is the use of * in python function definition?
body: <pre><code>def iglob(pathname, *, recursive=False):
  """Return an iterator which yields the paths matching a pathname pattern.
  
  The pattern may contain simple shell-style wildcards a la
  fnmatch. However, unlike fnmatch, filenames starting with a
  dot are special cases that are not matched by '*' and '?'
  patterns.
  
  If recursive is true, the pattern '**' will match any files and
  zero or more directories and subdirectories.
  """
  it = _iglob(pathname, recursive)
  if recursive and _isrecursive(pathname):
      s = next(it)  # skip empty string
      assert not s
  return it
  </code></pre>
  
  <p>When i browse the glob's code in python3.5.1, the function defined here, why there is a * in the function parameter list. And if i pass three parameters to this function the TypeError raised, what's the effect of the *? thanks first.</p>