The python variable length argument *, * variable length argument *, can omit the argument.
def func1(*items):
return items
assert func1() == tuple()
If it is a problem if the argument is omitted, consider implementing such as sending `TypeError ()`
when the argument is omitted.
def func2(*items):
if len(items) > 0:
return items
else:
raise TypeError("At least one argument required.")
func2()
-> TypeError
Sure, `` `func2``` is safe, but I don't know that the arguments were omitted until * Runtime error * was thrown. Therefore, you can enforce one or more arguments by implementing as follows. (* Syntax error *)
def func3(item, *items):
return (item, ) + items
You can do it efficiently by using itertools.chain
.
from itertools import chain
def func4(item, *items):
return tuple(chain((item, ), items))
Both implementations have the same output if they take one or more arguments. If you don't allow omission of arguments, `func3``` and
func4``` are easier than
`func1```.