A value if you don't provide one
The problem...
You have a function with parameters. Most of the time you call it the same way — same values, same behavior. Only occasionally does something change.
You're passing the same argument every single call. It feels redundant.
The idea!
Default parameters let you define a fallback value for a parameter. If you don't pass an argument — the default is used. If you do — it's overridden.
The syntax
def function_name(parameter="default_value"):
# parameter has a value even if you don't pass one
Your first default parameter
def greet(name="stranger"):
print(f"Hello, {name}.")
greet("Bull") # Hello, Bull.
greet() # Hello, stranger.
Pass a name — it uses yours. Pass nothing — it falls back to "stranger".
Multiple parameters — some with defaults
def banner(title, char="="):
border = char * len(title)
print(border)
print(title)
print(border)
banner("RedHorn") # uses = by default
banner("RedHorn", "*") # uses * instead
# =======
# RedHorn
# =======
# *******
# RedHorn
# *******
One parameter required. One optional. The function works either way.
Default parameters must come last
# Wrong — SyntaxError
def greet(name="stranger", role):
print(f"{name} — {role}")
# Right — defaults always after required parameters
def greet(name, role="developer"):
print(f"{name} — {role}")
Required parameters first. Default parameters after. Always.
Heads up!
- Default parameters go after required ones — always
- Pass an argument — it overrides the default
- Don't pass — the default is used
- Default values are set when the function is defined — not when it's called
The mindset shift
Stop thinking: "I need to pass every argument every time."
Start thinking: "Some parameters have sensible defaults — use them."
What you should understand now
- Default parameters provide a fallback value
- Pass an argument — overrides the default. Don't pass — default is used.
- Default parameters always come after required ones
- Makes functions flexible without requiring every argument every time