DEV Community

Nitinn S Kulkarni
Nitinn S Kulkarni

Posted on

Functions and Object-Oriented Programming (OOP) in Python

Functions and Object-Oriented Programming (OOP) are key concepts in Python that help organize and structure code efficiently. Understanding these concepts will improve code reusability, maintainability, and readability.

In this post, we’ll cover:

✅ Functions in Python – Defining, calling, and using arguments
✅ Lambda functions – Writing concise, one-liner functions
✅ Object-Oriented Programming (OOP) – Classes, objects, inheritance, and encapsulation

Let’s get started! 🚀

1️⃣ Functions in Python

✅ What is a Function?

A function is a block of reusable code that performs a specific task.

🔹 Defining and Calling Functions

def greet(name):  # Function definition
    return f"Hello, {name}!"

print(greet("Alice"))  # Calling the function
Enter fullscreen mode Exit fullscreen mode

🔹 Function Arguments and Return Values

Python functions support different types of arguments:

1. Positional Arguments

def add(a, b):
    return a + b

print(add(5, 3))  # Output: 8
Enter fullscreen mode Exit fullscreen mode

2. Default Arguments

def power(base, exponent=2):  # Default value for exponent
    return base ** exponent

print(power(3))  # Output: 9 (3^2)
print(power(3, 3))  # Output: 27 (3^3)
Enter fullscreen mode Exit fullscreen mode

3. Keyword Arguments (Named Arguments)

def introduce(name, age):
    print(f"My name is {name} and I'm {age} years old.")

introduce(age=25, name="Bob")  # Order doesn't matter
Enter fullscreen mode Exit fullscreen mode

4. Arbitrary Arguments (args and kwargs)

def multiply(*args):  # Accepts multiple arguments
    result = 1
    for num in args:
        result *= num
    return result

print(multiply(2, 3, 4))  # Output: 24

def describe_person(**kwargs):  # Accepts key-value pairs
    for key, value in kwargs.items():
        print(f"{key}: {value}")

describe_person(name="Alice", age=30, country="USA")
Enter fullscreen mode Exit fullscreen mode

2️⃣ Lambda Functions: One-Liner Functions

Lambda functions are anonymous, inline functions used for short operations.

🔹 Basic Syntax:

lambda arguments: expression

🔍 Example:

square = lambda x: x ** 2
print(square(4))  # Output: 16

add = lambda a, b: a + b
print(add(3, 5))  # Output: 8
Enter fullscreen mode Exit fullscreen mode

🔥 Use Case: Lambda functions are often used in sorting, filtering, and mapping data.

numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers, key=lambda x: -x)  # Sort in descending order
print(sorted_numbers)  # Output: [9, 5, 4, 3, 1, 1]
Enter fullscreen mode Exit fullscreen mode

3️⃣ Introduction to Object-Oriented Programming (OOP)

OOP is a programming paradigm that models real-world entities using classes and objects.

✅ Why Use OOP?

✅ Encapsulation – Grouping related data and functions together
✅ Inheritance – Reusing and extending functionality
✅ Polymorphism – Writing flexible code that works across different types

4️⃣ Classes and Objects in Python**

🔹 Defining a Class and Creating Objects


class Person:
    def __init__(self, name, age):  # Constructor
        self.name = name  # Instance variable
        self.age = age

    def introduce(self):  # Method
        return f"My name is {self.name} and I'm {self.age} years old."

# Creating an object (instance)
alice = Person("Alice", 25)
print(alice.introduce())  # Output: My name is Alice and I'm 25 years old.
Enter fullscreen mode Exit fullscreen mode

🔹 Instance Variables vs. Class Variables


class Counter:
    count = 0  # Class variable (shared among all instances)

    def __init__(self):
        Counter.count += 1

obj1 = Counter()
obj2 = Counter()
print(Counter.count)  # Output: 2 (shared across all objects)
Enter fullscreen mode Exit fullscreen mode

🔥 Key Difference:

Instance Variables (self.name) are unique to each object.
Class Variables (count) are shared across all instances.
Enter fullscreen mode Exit fullscreen mode

5️⃣ Inheritance: Reusing Code

Inheritance allows one class (child class) to inherit the properties of another (parent class).


class Animal:
    def speak(self):
        return "I make sounds"

class Dog(Animal):  # Dog class inherits from Animal
    def speak(self):
        return "Woof!"

dog = Dog()
print(dog.speak())  # Output: Woof!
Enter fullscreen mode Exit fullscreen mode

6️⃣ Encapsulation: Hiding Data with Private Variables

Encapsulation prevents direct modification of attributes.


class BankAccount:
    def __init__(self, balance):
        self.__balance = balance  # Private variable (cannot be accessed directly)

    def deposit(self, amount):
        self.__balance += amount

    def get_balance(self):
        return self.__balance  # Provide controlled access

account = BankAccount(1000)
account.deposit(500)
print(account.get_balance())  # Output: 1500

# print(account.__balance)  # This will raise an AttributeError
Enter fullscreen mode Exit fullscreen mode

7️⃣ Polymorphism: Methods with the Same Name but Different Behavior


class Bird:
    def speak(self):
        return "Chirp!"

class Dog:
    def speak(self):
        return "Woof!"

animals = [Bird(), Dog()]
for animal in animals:
    print(animal.speak())  # Calls the correct method for each object

Enter fullscreen mode Exit fullscreen mode

✅ Why Polymorphism?

Allows different classes to share the same method name, making code more flexible.

🔹 Conclusion

✅ Functions improve reusability and structure.
✅ Lambda functions allow writing concise, one-liner expressions.
✅ OOP (Classes, Inheritance, Encapsulation, Polymorphism) models real-world entities effectively.

Mastering these concepts will help you write cleaner and more maintainable Python code. 🚀

What’s Next?

In the next post, we’ll explore Python’s Modules and Packages, learning how to organize code effectively. Stay tuned! 🔥

💬 What Do You Think?

Do you use OOP in your projects? What’s your favorite Python feature? Let’s discuss in the comments! 💡

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more