Buy Me a Coffee

*My post explains positional-only parameters in Python.

You can set parameters and arguments for a function as shown below:

Parameters:

*Memos:

  • A parameter can have a default value.
  • All the parameters after the parameter with a default value must have default values.
  • There cannot be multiple same name parameters.
def func(fname, lname, age, gender): pass

def func(fname="John", lname="Smith", age=36, gender="Male"): pass

def func(fname, lname, age=36, gender="Male"): pass

def func(fname="John", lname="Smith", 36, "Male"): pass
# SyntaxError: invalid syntax

def func(fname, lname, age, gender, lname): pass
# SyntaxError: duplicate argument 'lname' in function definition

Arguments:

*Memos:

  • For an argument, there are a positional argument("John") and keyword argument(fname="John"): *Memos:
    • A positional argument cares its position to be passed to the corresponding parameter position because it cannot specify a parameter with a parameter name.
    • A keyword argument doesn't care its position to be passed to the corresponding parameter position because it can specify a parameter with a parameter name.
  • All the arguments after a keyword argument must be keyword arguments.
  • There cannot be multiple values for one argument.
  • There cannot be multiple same name keyword arguments.
def func(fname, lname, age, gender):
    print(fname, lname, age, gender)

func("John", "Smith", 36, "Male")                        
func(fname="John", lname="Smith", age=36, gender="Male")
func(age=36, lname="Smith", gender="Male",  fname="John")
func("John", "Smith", age=36, gender="Male")
# John Smith 36 Male

func(fname="John", lname="Smith", 36, "Male")
# SyntaxError: positional argument follows keyword argument

func(36, "Smith", age=36, fname="John")
# TypeError: func() got multiple values for argument 'fname'

func(lname="Smith", lname="Brown", age=36, gender="Male")
# SyntaxError: keyword argument repeated: lname
def func(fname="John", lname="Smith", age=36, gender="Male"):
    print(fname, lname, age, gender)

func()
# John Smith 36 Male

func("Tom", "Brown")
# Tom Brown 36 Male

func(gender="Female", fname="Anna")
# Anna Smith 36 Female