Avoid code repetition
Make code modular and organized
Debug and test specific parts easily
def function_name(parameters):
"""Optional docstring"""
# block of code
return result
def greet(name):
return f"Hello, {name}!"
print(greet("Abhi")) # Output: Hello, Abhi!
Component | Description |
---|---|
def |
Keyword to define a function |
function_name |
Name of the function |
parameters |
Optional input variables |
return |
Outputs the result of the function |
docstring |
(Optional) Description of function |
def area(length, width):
return length * width
print(area(5, 3)) # Output: 15
def greet(name="Guest"):
return f"Hello, {name}!"
print(greet()) # Output: Hello, Guest!
print(greet("Abhi")) # Output: Hello, Abhi!
print(area(width=4, length=6)) # Output: 24
*args
(Tuple of positional arguments)def add_all(*args):
return sum(args)
print(add_all(1, 2, 3, 4)) # Output: 10
**kwargs
(Dictionary of keyword arguments)def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Abhi", role="Data Scientist")
def get_stats(data):
return min(data), max(data), sum(data)/len(data)
low, high, avg = get_stats([1, 2, 3, 4, 5])
print(low, high, avg) # Output: 1 5 3.0
square = lambda x: x * x
print(square(5)) # Output: 25
def outer():
def inner():
return "Inner function!"
return inner()
print(outer()) # Output: Inner function!
def factorial(n):
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # Output: 120
memo = {}
def fibonacci(n):
if n in memo:
return memo[n]
if n <= 2:
return 1
memo[n] = fibonacci(n - 1) + fibonacci(n - 2)
return memo[n]
print(fibonacci(10)) # Output: 55
Functions that take other functions as arguments.
def apply_operation(func, x, y):
return func(x, y)
def multiply(a, b):
return a * b
print(apply_operation(multiply, 5, 3)) # Output: 15
✅ Use descriptive function names
✅ Keep functions small and focused
✅ Use docstrings to document purpose
✅ Avoid global variables inside functions