# Basic syntax
def greet(name):
"""Greet the user by name.""" # Docstring
return f'Hello, {name}!'
# Calling
message = greet('Alice')
print(message) # 'Hello, Alice!'
# Function without return (returns None implicitly)
def log(message):
print(f'[LOG]: {message}')
result = log('Started')
print(result) # None# Parameters: variables in the definition
def add(a, b): # a, b are parameters
return a + b
# Arguments: actual values passed
total = add(5, 10) # 5, 10 are arguments# Returns single value
def square(n):
return n * n
# Returns multiple values (actually a tuple!)
def min_max(lst):
return min(lst), max(lst)
result = min_max([3, 1, 4])
print(type(result)) # <class 'tuple'>
print(result) # (1, 4)
# Early return (guard clause)
def divide(a, b):
if b == 0:
return None # Exit early
return a / b
# A function can only return ONCE per call
# Code after return is UNREACHABLE
def bad():
return 1
print('Never runs') # Dead code!def calculate_area(radius):
"""
Calculate the area of a circle.
Args:
radius (float): The radius of the circle.
Returns:
float: The area of the circle.
"""
import math
return math.pi * radius ** 2
# Access docstring
print(calculate_area.__doc__)
# help() uses docstrings
# help(calculate_area)# Assign to variable
my_func = print
my_func('Hello') # Works!
# Pass as argument
def execute(func, value):
return func(value)
result = execute(square, 5) # 25
# Return from function
def get_multiplier(factor):
def inner(x):
return x * factor
return inner
double = get_multiplier(2)
print(double(10)) # 20Create a function `calculate_rectangle(length, width)` that returns a dictionary containing `'area'`, `'perimeter'`, and `'diagonal'` (use `**0.5` for square root). Include a proper multi-line docstring. Create a function `is_even(n)` that returns True/False, then use it inside `filter_evens(numbers)` to return only even numbers.