Bird
Raised Fist0
Pythonprogramming~20 mins

Argument order rules in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
๐ŸŽ–๏ธ
Argument Order Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of function call with mixed arguments
What is the output of this Python code?
Python
def greet(name, greeting="Hello", punctuation="!"):
    return f"{greeting}, {name}{punctuation}"

print(greet("Alice", punctuation="."))
ATypeError: positional argument follows keyword argument
BHello, Alice!
CHello, Alice.
DHello, punctuation=., Alice
Attempts:
2 left
๐Ÿ’ก Hint
Remember that positional arguments come before keyword arguments.
โ“ Predict Output
intermediate
2:00remaining
Error from wrong argument order
What error does this code produce?
Python
def add(x, y=5, z):
    return x + y + z

add(1, 2, 3)
A6
BNameError: name 'z' is not defined
CSyntaxError: invalid syntax
DSyntaxError: non-default argument follows default argument
Attempts:
2 left
๐Ÿ’ก Hint
Check the order of parameters with and without default values.
โ“ Predict Output
advanced
2:00remaining
Output with *args and keyword-only arguments
What is the output of this code?
Python
def func(a, b, *args, c=10, d=20):
    return a + b + sum(args) + c + d

print(func(1, 2, 3, 4, c=5))
A35
B40
CTypeError: func() missing 1 required keyword-only argument: 'd'
D30
Attempts:
2 left
๐Ÿ’ก Hint
Remember that after *args, parameters are keyword-only.
โ“ Predict Output
advanced
2:00remaining
Output with positional-only and keyword-only arguments
What is the output of this code?
Python
def example(a, /, b, *, c):
    return a + b + c

print(example(1, 2, c=3))
A6
BTypeError: example() missing 1 required positional argument: 'b'
CTypeError: example() got some positional-only arguments passed as keyword arguments
D5
Attempts:
2 left
๐Ÿ’ก Hint
Positional-only arguments must be passed positionally, keyword-only must be passed by name.
๐Ÿง  Conceptual
expert
2:00remaining
Identify the invalid function definition
Which of these function definitions is invalid due to argument order rules?
Adef f(a, b=2, *, c, d=4): pass
Bdef f(a=1, b, c=3): pass
Cdef f(a, /, b, *, c=3): pass
Ddef f(*args, b, c=3): pass
Attempts:
2 left
๐Ÿ’ก Hint
Parameters with default values must come after those without defaults.

Practice

(1/5)
1.

Which of the following correctly describes the order of arguments in a Python function definition?

easy
A. Positional-only, positional-or-keyword, keyword-only
B. Keyword-only, positional-only, positional-or-keyword
C. Positional-or-keyword, keyword-only, positional-only
D. Positional-or-keyword, positional-only, keyword-only

Solution

  1. Step 1: Recall argument order rules

    Python functions must define arguments in the order: positional-only, positional-or-keyword, then keyword-only.
  2. Step 2: Match the correct order

    Positional-only, positional-or-keyword, keyword-only matches this exact order, others do not.
  3. Final Answer:

    Positional-only, positional-or-keyword, keyword-only -> Option A
  4. Quick Check:

    Argument order = Positional-only, positional-or-keyword, keyword-only [OK]
Hint: Remember: positional-only first, then normal, then keyword-only [OK]
Common Mistakes:
  • Confusing keyword-only and positional-only order
  • Thinking positional-or-keyword comes first
  • Ignoring positional-only arguments
2.

Which of the following function definitions is syntactically correct in Python?

def example(a, /, b, *, c):
    pass
easy
A. def example(a, /, b, *, c): pass
B. def example(a, b, *, /, c): pass
C. def example(a, *, b, /, c): pass
D. def example(/, a, b, *, c): pass

Solution

  1. Step 1: Understand syntax for positional-only and keyword-only

    The slash (/) marks positional-only arguments before it, and the asterisk (*) marks keyword-only arguments after it.
  2. Step 2: Check each option's order

    def example(a, /, b, *, c): pass correctly places a before / (positional-only), b as positional-or-keyword, and c after * (keyword-only). Others have invalid order or misplaced / and *.
  3. Final Answer:

    def example(a, /, b, *, c): pass -> Option A
  4. Quick Check:

    Syntax with / and * correct = def example(a, /, b, *, c): pass [OK]
Hint: Slash (/) before positional-only, star (*) before keyword-only [OK]
Common Mistakes:
  • Placing / after positional-or-keyword arguments
  • Putting * before /
  • Using / as a standalone argument
3.

What is the output of this code?

def func(a, /, b, *, c):
    print(a, b, c)

func(1, 2, c=3)
medium
A. TypeError: missing required keyword-only argument 'c'
B. 1 2 3
C. TypeError: positional argument after keyword argument
D. SyntaxError

Solution

  1. Step 1: Understand argument passing

    a is positional-only, so must be passed by position (1). b is positional-or-keyword, passed by position (2). c is keyword-only, passed as c=3.
  2. Step 2: Check function call validity and output

    All arguments are passed correctly. The print outputs the values: 1 2 3.
  3. Final Answer:

    1 2 3 -> Option B
  4. Quick Check:

    func(1, 2, c=3) prints 1 2 3 [OK]
Hint: Positional-only args by position, keyword-only by name [OK]
Common Mistakes:
  • Passing positional-only argument by keyword
  • Passing keyword-only argument positionally
  • Confusing argument order in call
4.

Identify the error in this function call:

def f(x, /, y, *, z):
    return x + y + z

f(x=1, y=2, z=3)
medium
A. No error, returns 6
B. TypeError: missing required positional argument y
C. SyntaxError: invalid function call
D. TypeError: x is positional-only and cannot be passed as keyword

Solution

  1. Step 1: Check argument types in definition

    x is positional-only (before /), y is positional-or-keyword, z is keyword-only (after *).
  2. Step 2: Analyze function call

    Calling f(x=1, y=2, z=3) tries to pass x by keyword, which is not allowed for positional-only arguments, causing a TypeError.
  3. Final Answer:

    TypeError: x is positional-only and cannot be passed as keyword -> Option D
  4. Quick Check:

    Positional-only args cannot be keyword = TypeError [OK]
Hint: Positional-only args can't be named in calls [OK]
Common Mistakes:
  • Passing positional-only argument by keyword
  • Thinking all arguments can be named
  • Ignoring the / marker meaning
5.

You want to define a function that takes exactly two positional-only arguments, one positional-or-keyword argument, and two keyword-only arguments. Which of these definitions is correct?

1. def func(a, b, /, c, *, d, e): pass
2. def func(a, /, b, c, *, d, e): pass
3. def func(a, b, c, /, *, d, e): pass
4. def func(a, b, /, *, c, d, e): pass
hard
A. Definition 3
B. Definition 2
C. Definition 1
D. Definition 4

Solution

  1. Step 1: Identify argument categories

    Two positional-only args: before / (a, b). One positional-or-keyword: after / and before * (c). Two keyword-only: after * (d, e).
  2. Step 2: Check each definition

    Definition 1 matches this order exactly: a, b before /, c after /, d, e after *. Others have wrong placement of / or * or argument counts.
  3. Final Answer:

    Definition 1 -> Option C
  4. Quick Check:

    Two positional-only, one normal, two keyword-only = Definition 1 [OK]
Hint: Two positional-only before /, one normal after, two keyword-only after * [OK]
Common Mistakes:
  • Placing too many args before or after / or *
  • Miscounting positional-only arguments
  • Confusing keyword-only with positional-or-keyword