*Memos:
- My post explains a function.
- My post explains positional-only parameters in function.
- My post explains keyword-only parameters in function.
- My post explains positional-only parameters and keyword-only parameters together in function.
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
# No error
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(**{"fname":"John", "lname":"Smith", "age":36, "gender":"Male"})
func(age=36, lname="Smith", gender="Male", fname="John")
func(**{"age":36, "lname":"Smith", "gender":"Male", "fname":"John"})
func("John", "Smith", age=36, gender="Male")
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(fname="Anna", gender="Female")
func(**{"fname":"Anna", "gender":"Female"})
func(gender="Female", fname="Anna")
func(**{"gender":"Female", "fname":"Anna"})
# Anna Smith 36 Female
func("Anna", "Brown", age=27, gender="Female")
func("Anna", "Brown", **{"age":27, "gender":"Female"})
func("Anna", "Brown", gender="Female", age=27)
func("Anna", "Brown", **{"gender":"Female", "age":27})
# Anna Brown 27 Female
Top comments (0)