π Pythonπ
Day 9
Functions in Python
Define, call, return values, use default and keyword arguments, and lambdas.
π―
Learning objectives
- βDefine functions with parameters and return values
- βUse positional, keyword and default arguments
- βUnderstand *args, **kwargs and lambda
π‘ Key points
- def name(params): defines a function. Body is indented.
- A function without an explicit return gives back None.
- Default arguments make parameters optional: def f(x, y=0).
- *args captures extra positional args as a tuple; **kwargs captures extra keyword args as a dict.
- lambda creates a small anonymous function β useful for one-liners passed to sort/map/filter.
π» Code examples(5)
#1Simple function
pythondef add(a, b):
return a + b
print(add(3, 4)) # 7
No type declarations required. Return type is inferred from what you return.
#2Default + keyword arguments
pythondef greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
print(greet("Amit")) # Hello, Amit!
print(greet("Priya", "Hi")) # Hi, Priya!
print(greet(greeting="Namaste", name="Ravi")) # kw args
Defaults let callers skip args. Keyword arguments let them pass in any order.
#3*args and **kwargs
pythondef summary(*args, **kwargs):
print("args:", args)
print("kwargs:", kwargs)
summary(1, 2, 3, name="Amit", age=20)
Output
args: (1, 2, 3)
kwargs: {'name': 'Amit', 'age': 20}*args = variable number of positional arguments as a tuple. **kwargs = variable keyword args as a dict.
#4Return multiple values
pythondef stats(nums):
return min(nums), max(nums), sum(nums) / len(nums)
lo, hi, avg = stats([3, 8, 1, 12, 5])
print(lo, hi, avg) # 1 12 5.8
Python 'returns multiple' via a tuple. Unpack on the caller side with commas.
#5lambda
pythonsquare = lambda x: x * x
print(square(6)) # 36
# more useful: pass to another function
pairs = [("Amit", 87), ("Priya", 92), ("Ravi", 76)]
pairs.sort(key=lambda p: p[1], reverse=True)
print(pairs)
lambda is a single-expression function. Great for callbacks; for anything longer use def.
π― Practice
Q1. What does a function return if there's no return statement?+
None.
Q2. Write a function that accepts any number of ints and returns their sum.+
def total(*nums): return sum(nums)
Q3. Sort a list of names by length using lambda.+
names.sort(key=lambda n: len(n))
π Notes
Type hints (optional, recommended)
def add(a: int, b: int) -> int:
return a + b
Python doesn't enforce types at runtime, but hints help IDEs, mypy, and readers.
Docstrings
def area(r: float) -> float:
"""Return the area of a circle with radius r."""
return 3.14159 * r * r
print(area.__doc__)
Triple-quoted string as the FIRST line of the body is auto-attached as the function's documentation.