Function Parameters

Default Parameters

  1. # parameter with default value
  2. def greet(name="Guest"):
  3. print(f"Hello, {name}!")
  4. greet()
  5. #ans: Hello, Guest!
  6. greet("Alice")
  7. #ans: Hello, Alice!

Multiple Defaults

  1. # multiple default parameters
  2. def create_user(name, age=0, city="Unknown"):
  3. return f"{name}, {age}, {city}"
  4. result = create_user("Alice")
  5. #ans: "Alice, 0, Unknown"

Keyword Arguments

  1. # call with keyword arguments
  2. def describe(animal, name):
  3. print(f"{animal} named {name}")
  4. describe(name="Rex", animal="dog")
  5. #ans: dog named Rex

Variable Arguments (*args)

  1. # accept any number of arguments
  2. def sum_all(*numbers):
  3. return sum(numbers)
  4. result = sum_all(1, 2, 3, 4)
  5. #ans: 10

Keyword Variable Arguments (**kwargs)

  1. # accept any keyword arguments
  2. def print_info(**info):
  3. for key, value in info.items():
  4. print(f"{key}: {value}")
  5. print_info(name="Alice", age=25)
  6. #ans: name: Alice
  7. #ans: age: 25

Exercises - Part 1

  1. # what is printed?
  2. def func(x=5):
  3. print(x)
  4. func()
  5. #ans: 5
  6. func(10)
  7. #ans: 10

Exercises - Part 2

  1. # default parameter order?
  2. def func(a, b=10):
  3. return a + b
  4. func(5)
  5. #ans: 15

Exercises - Part 3

  1. # can you do this?
  2. def func(a=5, b):
  3. return a + b
  4. #ans: SyntaxError (non-default after default)

Exercises - Part 4

  1. # keyword arguments?
  2. def func(a, b):
  3. return a - b
  4. func(b=10, a=5)
  5. #ans: -5 (5 - 10)

Exercises - Part 5

  1. # mixing positional and keyword?
  2. def func(a, b, c):
  3. return a + b + c
  4. func(1, c=3, b=2)
  5. #ans: 6

Exercises - Part 6

  1. # *args type?
  2. def func(*args):
  3. return type(args)
  4. func(1, 2, 3)
  5. #ans: <class 'tuple'>

Exercises - Part 7

  1. # **kwargs type?
  2. def func(**kwargs):
  3. return type(kwargs)
  4. func(a=1, b=2)
  5. #ans: <class 'dict'>

Exercises - Part 8

  1. # combining parameters?
  2. def func(a, b=5, *args):
  3. return a + b + sum(args)
  4. func(1, 2, 3, 4)
  5. #ans: 10 (1+2+3+4)

Exercises - Part 9

  1. # empty *args?
  2. def func(*args):
  3. return len(args)
  4. func()
  5. #ans: 0

Exercises - Part 10

  1. # mutable default parameter?
  2. def func(x=[]):
  3. x.append(1)
  4. return x
  5. func()
  6. func()
  7. #ans: [1, 1] (same list object!)

Google tag (gtag.js)