Keyword-Only Parameters in Python
Buy Me a Coffee☕ *Memos: My post explains parameters and arguments in Python. My post explains positional-only parameters in Python. You can set keyword-only parameters for a function as shown below: *Memos: A keyword-only parameter is the parameter which only accepts a keyword argument. All the parameters after / are keyword-only parameters. Keyword-only parameters are added from Python 3.0. The doc officially says keyword-only arguments but they're actually keyword-only parameters. The parameters without default values: def func(fname, lname, *, age, gender): pass def func(*fname, lname, age, gender): pass def func(fname, *, lname, age, *, gender): pass # SyntaxError: * argument may appear only once def func(fname, lname, age, gender, *): pass # SyntaxError: named arguments must follow bare * def func(fname, lname, /, age, gender): print(fname, lname, age, gender) func("John", "Smith", age=36, gender="Male") func("John", "Smith", gender="Male", age=36) func(fname="John", lname="Smith", age=36, gender="Male") func(age=36, gender="Male", fname="John", lname="Smith") # John Smith 36 Male func("John", "Smith", 36, "Male") # TypeError: func() takes 2 positional arguments but 4 were given The parameters with default values: def func(fname="John", lname="Smith", *, age=36, gender="Male"): pass def func(*, fname="John", lname="Smith", age=36, gender="Male"): pass def func(fname="John", *, lname="Smith", age=36, *, gender="Male"): pass # SyntaxError: * argument may appear only once def func(fname="John", lname="Smith", age=36, gender="Male", *): pass # SyntaxError: named arguments must follow bare * def func(fname="John", lname="Smith", /, age=36, gender="Male"): print(fname, lname, age, gender) func() # John Smith 36 Male func("Anna", "Brown", age=27, gender="Female") func("Anna", "Brown", gender="Female", age=27) func(fname="Anna", lname="Brown", age=27, gender="Female") func(age=27, gender="Female", fname="Anna", lname="Brown") # Anna Brown 27 Female func("Anna", "Brown", 27, "Female") # TypeError: func() takes from 0 to 2 positional arguments but 4 were given

*Memos:
- My post explains parameters and arguments in Python.
- My post explains positional-only parameters in Python.
You can set keyword-only parameters for a function as shown below:
*Memos:
- A keyword-only parameter is the parameter which only accepts a keyword argument.
- All the parameters after
/
are keyword-only parameters. - Keyword-only parameters are added from Python 3.0.
- The doc officially says keyword-only arguments but they're actually keyword-only parameters.
The parameters without default values:
def func(fname, lname, *, age, gender): pass
def func(*fname, lname, age, gender): pass
def func(fname, *, lname, age, *, gender): pass
# SyntaxError: * argument may appear only once
def func(fname, lname, age, gender, *): pass
# SyntaxError: named arguments must follow bare *
def func(fname, lname, /, age, gender):
print(fname, lname, age, gender)
func("John", "Smith", age=36, gender="Male")
func("John", "Smith", gender="Male", age=36)
func(fname="John", lname="Smith", age=36, gender="Male")
func(age=36, gender="Male", fname="John", lname="Smith")
# John Smith 36 Male
func("John", "Smith", 36, "Male")
# TypeError: func() takes 2 positional arguments but 4 were given
The parameters with default values:
def func(fname="John", lname="Smith", *, age=36, gender="Male"): pass
def func(*, fname="John", lname="Smith", age=36, gender="Male"): pass
def func(fname="John", *, lname="Smith", age=36, *, gender="Male"): pass
# SyntaxError: * argument may appear only once
def func(fname="John", lname="Smith", age=36, gender="Male", *): pass
# SyntaxError: named arguments must follow bare *
def func(fname="John", lname="Smith", /, age=36, gender="Male"):
print(fname, lname, age, gender)
func()
# John Smith 36 Male
func("Anna", "Brown", age=27, gender="Female")
func("Anna", "Brown", gender="Female", age=27)
func(fname="Anna", lname="Brown", age=27, gender="Female")
func(age=27, gender="Female", fname="Anna", lname="Brown")
# Anna Brown 27 Female
func("Anna", "Brown", 27, "Female")
# TypeError: func() takes from 0 to 2 positional arguments but 4 were given