In Python, functions are reusable blocks of code that perform specific tasks. They allow you to:
Let’s explore the concept from scratch with examples, using real-life analogies.
What is a Function?
A function is like a machine:
• Input: You provide ingredients or data.
• Processing: The machine performs a specific operation.
• Output: You get the result.
Example: A coffee machine takes water and coffee beans (inputs), processes them, and produces coffee (output).
Parts of a Function in Python
1. Defining a Function: Use the def keyword followed by the function name, parentheses, and a colon.
2. Calling a Function: Use the function name followed by parentheses to execute it.
Defining a Function
Syntax:def function_name(parameters):
# Code block
return value
• function_name: The name of the function.
• parameters: Input values (optional).
• Code block: Instructions to perform a specific task.
• return: Sends back the result (optional).
Calling a Function
Syntax:function_name(arguments)
• arguments: Values passed to the function when calling it.
Example 1: A Simple Function
Define a Function
def greet():
print("Hello, world!")
Call the Function
greet() # Output: Hello, world!
Real-Life Analogy: Greeting Machine
You press a button, and the machine says "Hello!".
1. Defining: Set up the machine with specific instructions (def greet).
2. Calling: Press the button to activate the instructions (greet()).
Functions with Parameters
Parameters allow you to pass data into a function.
Example 2
def greet_person(name):
print(f"Hello, {name}!")
Call the Function
greet_person("Alice") # Output: Hello, Alice!
greet_person("Bob") # Output: Hello, Bob!
Real-Life Analogy: The greeting machine now customizes its message based on the person.
1. Defining: The machine is set up to greet a specific person (def greet_person(name)).
2. Calling: You provide the person's name to the machine (greet_person("Alice")).
Functions with Return Values
The return keyword sends a result back to the caller.
Example 3: Adding Two Numbers
def add_numbers(a, b):
return a + b
Call the Function
result = add_numbers(10, 20)
print(result) # Output: 30
Example 4: Calculating Total Price
Imagine an online store where you calculate the total price of items.
Define a Function
def calculate_total_price(price, quantity):
return price * quantity
Call the Function
total = calculate_total_price(50, 3)
print(f"Total Price: ${total}") # Output: Total Price: $150
Functions with Default Parameters
Default Parameters
Provide default values for parameters.
Example
def greet(name="Guest"):
print(f"Hello, {name}!")
Call the Function
greet() # Output: Hello, Guest!
greet("Charlie") # Output: Hello, Charlie!
Keyword Arguments
Specify arguments by their names for clarity.
Example
def introduce(name, age):
print(f"I am {name} and I am {age} years old.")
Call the Function
introduce(age=30, name="Diana") # Output: I am Diana and I am 30 years old.
Functions with Variable-Length Arguments
1. *args: Pass a variable number of positional arguments.
2. **kwargs: Pass a variable number of keyword arguments.
Example: *args
def sum_numbers(*args): return sum(args) Call the Function print(sum_numbers(1, 2, 3, 4)) # Output: 10
Example: **kwargs
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
Call the Function
print_info(name="Alice", age=25, city="New York")
# Output:
# name: Alice
# age: 25
# city: New York
Scope of Variables
1. Local Variables: Declared inside a function and accessible only there.
2. Global Variables: Declared outside a function and accessible throughout the program.
x = 10 # Global variable
def multiply_by_two():
x = 5 # Local variable
return x * 2
print(multiply_by_two()) # Output: 10
print(x) # Output: 10
Lambda Functions
Anonymous, single-expression functions defined using the lambda keyword.
Examplesquare = lambda x: x ** 2 print(square(4)) # Output: 16
Use Case: Great for short, throwaway functions or when used as arguments to higher-order functions like map() or filter().
Examples for comparison operators in Python
1. Function for User Authentication
def authenticate_user(username, password):
return username == "admin" and password == "1234"
Call the Function
if authenticate_user("admin", "1234"):
print("Access Granted.")
else:
print("Access Denied.")
2. Dynamic Discount Calculation
def calculate_discount(price, discount=10):
return price - (price * discount / 100)
Call the Function
print(calculate_discount(100)) # Output: 90
print(calculate_discount(100, 20)) # Output: 80
3. Function for Temperature Conversion
def celsius_to_fahrenheit(celsius):
return (celsius * 9/5) + 32
Call the Function
print(celsius_to_fahrenheit(25)) # Output: 77.0
Key Takeaways
1. Define once, use multiple times: Functions eliminate code duplication.
2. Use parameters to make functions dynamic and reusable.
3. Use return values to process data and pass results back to the caller.
4. Understand the scope of variables to avoid conflicts.
5. Master default, keyword, and variable-length arguments for flexibility.
6. Use lambda functions for short, throwaway functions.