Functions
def creates a function. Without a return, it returns None.
def greet(name, greeting="Hi"):
return f"{greeting}, {name}"
greet("Ada")
greet("Ada", greeting="Hello")Parameter kinds
- A parameter with
=has a default and may be left out. *argscollects extra positional arguments into a tuple.- Anything after
*argscan only be passed by name. Those are keyword-only parameters. **kwargscollects extra named arguments into a dict.
def log(*parts, sep=" "):
return sep.join(parts)
log("a", "b") # "a b"
log("a", "b", sep="-") # "a-b"Names assigned inside a function are local to it. A default value is computed once, when def runs, so never use a list or dict as a default. Use None and create the list inside.
Your task
Write clamp(value, low=0, high=100) limiting value to that range. Write average(*numbers, default=0) returning the mean of its arguments, or default when there are none.
The explanation opens here once every check passes.