Positional-Only Parameters in Python
Buy Me a Coffee☕ *My post explains parameters and arguments in Python. You can set positional-only parameters for a function as shown below: *Memos: A positional-only parameter is the parameter which only accepts a positional argument. All the parameters before / are positional-only parameters. Positional-only parameters are added from Python 3.8. 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: / may appear only once def func(/, fname, lname, age, gender): pass # SyntaxError: at least one argument must precede / def func(fname, lname, /, age, gender): print(fname, lname, age, gender) func("John", "Smith", 36, "Male") func("John", "Smith", age=36, gender="Male") func("John", "Smith", gender="Male", age=36) # John Smith 36 Male func(fname="John", lname="Smith", age=36, gender="Male") # TypeError: func() got some positional-only arguments passed # as keyword arguments: 'fname, lname' 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: / may appear only once def func(/, fname="John", lname="Smith", age=36, gender="Male"): pass # SyntaxError: at least one argument must precede / 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) # Anna Brown 27 Female func(fname="Anna", lname="Brown", age=27, gender="Female") # TypeError: func() got some positional-only arguments passed # as keyword arguments: 'fname, lname'

*My post explains parameters and arguments in Python.
You can set positional-only parameters for a function as shown below:
*Memos:
- A positional-only parameter is the parameter which only accepts a positional argument.
- All the parameters before
/
are positional-only parameters. - Positional-only parameters are added from Python 3.8.
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: / may appear only once
def func(/, fname, lname, age, gender): pass
# SyntaxError: at least one argument must precede /
def func(fname, lname, /, age, gender):
print(fname, lname, age, gender)
func("John", "Smith", 36, "Male")
func("John", "Smith", age=36, gender="Male")
func("John", "Smith", gender="Male", age=36)
# John Smith 36 Male
func(fname="John", lname="Smith", age=36, gender="Male")
# TypeError: func() got some positional-only arguments passed
# as keyword arguments: 'fname, lname'
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: / may appear only once
def func(/, fname="John", lname="Smith", age=36, gender="Male"): pass
# SyntaxError: at least one argument must precede /
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)
# Anna Brown 27 Female
func(fname="Anna", lname="Brown", age=27, gender="Female")
# TypeError: func() got some positional-only arguments passed
# as keyword arguments: 'fname, lname'