Python Function Fundamentals and Advanced Concepts

Function Definition and Structure

Functions in Python are reusable blocks of code that perform specific tasks. They enhance modularity and code reusability. Functions are defined using the def keyword followed by a name and parentheses containing optional parameters.

def greet():
    print("Hello, world!")

greet()

A function can accept parameters to make it more flexible:

def compare_values(x, y):
    return x if x > y else y

result = compare_values(7, 10)
print(result)  # Output: 10

Function Parameters and Arguments

Parameters can be mutable or immutable. Immutable types like integers and strings are passed by value, while mutable types like lists and dictionaries are passed by reference.

def modify_immutable(val):
    print(id(val))
    val = 100
    print(id(val))

number = 5
print(id(number))
modify_immutable(number)

For mutable objects:

def update_list(target_list):
    target_list.append([1, 2, 3])
    print("Inside function:", target_list)

my_list = [10, 20]
update_list(my_list)
print("Outside function:", my_list)

Parameter Types

  • Required praameters: Must be provided in correct order
  • Keyword parameters: Allow passing arguments by name
  • Default parameters: Use predefined values if not provided
  • Variable-length parameters: Accept arbitrary number of arguments
def display_info(name, age=25):
    print(f"Name: {name}, Age: {age}")

display_info("Alice", 30)
display_info("Bob")

Variable-Length Arguments

def process_data(first, *rest):
    print("First:", first)
    print("Rest:", rest)

process_data(1, 2, 3, 4)

Dictionary-based variable arguments:

def process_kwargs(first, **kwargs):
    print("First:", first)
    print("Additional:", kwargs)

process_kwargs(1, a=2, b=3)

Lambda Functions

Anonymous functions can be created using lambda expressions:

add_ten = lambda x: x + 10
print(add_ten(5))  # Output: 15

multiply = lambda a, b: a * b
print(multiply(3, 4))  # Output: 12

Lambda functions can be nested inside regular functions:

def create_multiplier(n):
    return lambda x: x * n

doubler = create_multiplier(2)
tripler = create_multiplier(3)

print(doubler(10))  # Output: 20
print(tripler(10))  # Output: 30

Return Statements

Functions return values using the return statement:

def calculate_sum(a, b):
    result = a + b
    print("Inside function:", result)
    return result

total = calculate_sum(15, 25)
print("Outside function:", total)

Positional-only Parameters

Python 3.8 introduced positional-only parameters using the / syntax:

def calculate(a, b, /, c, *, d):
    return a + b + c + d

print(calculate(1, 2, c=3, d=4))  # Valid
# calculate(a=1, b=2, c=3, d=4)  # Invalid
# calculate(1, 2, 3, 4)  # Invalid

Tags: python functions lambda parameters return

Posted on Sun, 14 Jun 2026 18:01:58 +0000 by mmoranuk