Bird
Raised Fist0
Pythonprogramming~5 mins

Default arguments in Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What are default arguments in Python functions?
Default arguments are values given to function parameters that are used if no argument is provided when the function is called.
Click to reveal answer
beginner
How do you define a default argument in a Python function?
You assign a value to a parameter in the function definition, like def greet(name='Friend'):.
Click to reveal answer
beginner
What happens if you call a function with a default argument but provide a value for that argument?
The provided value overrides the default argument value for that call.
Click to reveal answer
intermediate
Why should mutable objects be avoided as default argument values?
Because the same mutable object is shared across calls, which can cause unexpected behavior if it is modified.
Click to reveal answer
intermediate
Example: What is the output of this code?
def add_item(item, item_list=[]):
    item_list.append(item)
    return item_list

print(add_item('apple'))
print(add_item('banana'))
Output:
['apple']
['apple', 'banana']

This happens because the default list is shared between calls.
Click to reveal answer
What is the correct way to set a default argument for a function parameter in Python?
Adef func(x): default=10
Bdef func(x): x=10
Cdef func(x=10):
Ddef func(x:10):
If a function has a default argument, what happens when you call it without that argument?
AThe argument becomes None.
BThe default value is used.
CAn error occurs.
DThe function ignores the parameter.
Why can using a mutable object like a list as a default argument cause problems?
ABecause it creates a new object every call.
BBecause Python does not allow lists as defaults.
CBecause mutable objects cannot be default arguments.
DBecause the same object is shared across calls.
How can you avoid issues with mutable default arguments?
AUse None as the default and create a new object inside the function.
BUse an empty list as default anyway.
CAvoid default arguments altogether.
DUse global variables instead.
What will this code print?
def greet(name='Friend'):
    print(f'Hello, {name}!')

greet()
greet('Alice')
AHello, Friend!<br>Hello, Alice!
BHello, !<br>Hello, Alice!
CHello, Friend!<br>Hello, Friend!
DError
Explain what default arguments are and how they work in Python functions.
Think about function parameters that have a value ready if you don't give one.
You got /3 concepts.
    Describe the problem with using mutable objects as default arguments and how to fix it.
    Consider what happens if you change a list used as a default argument.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of default arguments in Python functions?
      easy
      A. To create variables inside the function
      B. To provide preset values for parameters if no argument is given
      C. To make functions run faster
      D. To force the user to always provide all arguments

      Solution

      1. Step 1: Understand default arguments

        Default arguments allow a function to have parameters with preset values if the caller does not provide them.
      2. Step 2: Identify the purpose

        This makes the function easier to call without needing all arguments every time.
      3. Final Answer:

        To provide preset values for parameters if no argument is given -> Option B
      4. Quick Check:

        Default arguments = preset values [OK]
      Hint: Default arguments fill in missing inputs automatically [OK]
      Common Mistakes:
      • Thinking default arguments speed up code
      • Believing default arguments force all inputs
      • Confusing default arguments with variable creation
      2. Which of the following function definitions uses default arguments correctly?
      easy
      A. def greet(name='Friend', age):
      B. def greet(name=, age=30):
      C. def greet(name, age=30):
      D. def greet(name, age=):

      Solution

      1. Step 1: Check default argument placement

        Parameters with default values must come after parameters without defaults.
      2. Step 2: Analyze each option

        def greet(name='Friend', age): places a default before a non-default parameter, which is invalid syntax. Options C and D have syntax errors. def greet(name, age=30): correctly places the default argument after a required parameter.
      3. Final Answer:

        def greet(name, age=30): -> Option C
      4. Quick Check:

        Defaults after required params = correct syntax [OK]
      Hint: Put default parameters after required ones [OK]
      Common Mistakes:
      • Placing default arguments before required ones
      • Leaving default values empty
      • Using invalid syntax for defaults
      3. What is the output of this code?
      def multiply(a, b=2):
          return a * b
      
      print(multiply(4))
      print(multiply(4, 3))
      medium
      A. Error
      B. 6 and 12
      C. 8 and 6
      D. 8 and 12

      Solution

      1. Step 1: Understand default argument usage

        When multiply(4) is called, b uses its default value 2, so 4 * 2 = 8.
      2. Step 2: Evaluate second call

        When multiply(4, 3) is called, b is 3, so 4 * 3 = 12.
      3. Final Answer:

        8 and 12 -> Option D
      4. Quick Check:

        Default used first call, explicit second call = 8 and 12 [OK]
      Hint: Default used if argument missing, else explicit value [OK]
      Common Mistakes:
      • Assuming default is ignored when argument is given
      • Confusing order of arguments
      • Expecting error when default is used
      4. Find the error in this function definition:
      def add_numbers(x=5, y):
          return x + y
      medium
      A. Default argument before non-default argument causes SyntaxError
      B. Missing return statement
      C. Function name is invalid
      D. No error, code runs fine

      Solution

      1. Step 1: Check parameter order

        Parameters with default values must come after parameters without defaults in Python.
      2. Step 2: Identify error

        Here, x has a default but y does not, so this causes a SyntaxError.
      3. Final Answer:

        Default argument before non-default argument causes SyntaxError -> Option A
      4. Quick Check:

        Default before required param = SyntaxError [OK]
      Hint: Non-default params must come before default ones [OK]
      Common Mistakes:
      • Ignoring parameter order rules
      • Thinking missing return causes error here
      • Assuming function name is invalid
      5. You want a function that greets a user with their name and an optional greeting word (default is 'Hello'). Which function definition is correct and prints "Hi, Alice!" when called as greet('Alice', 'Hi') and "Hello, Bob!" when called as greet('Bob')?
      hard
      A. def greet(name, greeting='Hello'): print(f"{greeting}, {name}!")
      B. def greet(greeting='Hello', name): print(f"{greeting}, {name}!")
      C. def greet(name, greeting): print(f"{greeting}, {name}!")
      D. def greet(name='User', greeting='Hello'): print(f"{name}, {greeting}!")

      Solution

      1. Step 1: Check parameter order and defaults

        Parameters with defaults must come after those without. def greet(name, greeting='Hello'): print(f"{greeting}, {name}!") has name first (no default), greeting second (default 'Hello').
      2. Step 2: Verify behavior

        Calling greet('Alice', 'Hi') prints "Hi, Alice!". Calling greet('Bob') uses default greeting "Hello" and prints "Hello, Bob!".
      3. Final Answer:

        def greet(name, greeting='Hello'): print(f"{greeting}, {name}!") -> Option A
      4. Quick Check:

        Defaults after required params, works as expected [OK]
      Hint: Put required params first, defaults after [OK]
      Common Mistakes:
      • Placing default param before required param
      • Not providing default for optional greeting
      • Using default for name causing unexpected calls