Mohit Kapadiya
GithubContact
  • About Mohit
  • Skills & Experience
  • 🐍 Python
    • Python Basics
    • Advanced Python
    • Object-Oriented Python
    • Data Science & Machine Learning
    • Web Development
    • DevOps & Automation
    • Python Testing
    • Blockchain Development in Python
    • Networking and Security
    • AI & NLP in Python
    • TensorFlow
    • Web3.py
    • FastAPI
    • OpenCV
    • Python with Servers
    • Pandas
    • SciPy
    • Django
    • Matplotlib
    • Python with DBs
    • NumPy
  • Javascript
    • Basics
    • Advance Javascript
    • Object Oriented Javascript
    • Design Patterns in JS
    • Frameworks & Libraries
    • Blockchain Development in JS
    • Web Frontend in JS
    • Performance Optimization
    • JavaScript Testing
    • Backend in JS
    • JavaScript Security
    • Modern Development (Tooling)
    • JS vs JQuery
    • JS Graphics
    • JS JSON
    • JS AJAX
    • JS with Servers
  • Solidity
    • Dapp Contracts
    • Gas Optimisation
    • Unit Testing
    • ERC 6551
    • ERC 4337
    • EOF
    • Staking Contracts
    • Swap Contracts
    • ERC 20, 721, 1155
  • Frontend
    • FastAPI
    • Web3.py
    • Django
    • Three.js
    • Web3.js
    • Flask
    • Magic-UI
    • Accernety-UI
    • Material-UI
    • ThreeJS
    • AngularJS
    • NextJS
    • Tailwind CSS & Shadcn & Chart JS
    • ReactJS
    • HTML & CSS
  • Backend
    • TensorFlow.js
    • Socket.io
    • Firebase SDK
    • C, C++ & C#
    • Laravel
    • Django & Python
    • NodeJS & ExpressJS
  • Database
    • MongoDB & Mongoose
    • PosgresSQL
    • Vector
    • MySQL
    • Multi DBs Inter-Connections
    • Encryption in DBs
  • Blockchains
    • Avalnche
    • Sui
    • Tron Chain
    • TON
    • Phantom
    • Degen
    • Coti
    • Conflux
    • IOTA
    • Stacks Chain
    • Kaspa
    • BlockDAG
    • ZkSync
    • Polkadot
    • Hyper Ledger
    • Sui
    • Solana
    • Bitcoin
    • XRP Ledger
    • Cardano
    • Quranium
    • Ethereum
    • Solana
    • Arbitrum One & Nova
    • Binance Smart Chain
    • Polygon & Zero Knowledge Proof
  • White Paper Understanding
    • Polkadot
    • Hyper Ledger
    • Sui
    • Solana
    • Bitcoin
    • XRP Ledger
    • Cardano
    • Quranium
    • Ethereum
    • Solana
    • Arbitrum One & Nova
    • Binance Smart Chain
    • Polygon & Zero Knowledge Proof
  • SDKs & API Providers
    • Software Developer Kits (SDKs)
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Server & Domains
    • Azure
    • Render
    • Heroku
    • Vercel
    • Google Cloud
    • AWS (Amazon Web Service)
    • Domain Name Service Providers
      • Godaddy
      • Copy of Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • DevOps
      • Ansible
      • Paramiko
      • Fabric
      • Thirdweb
  • Security Standards
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Quantum Computer
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • AI, ML & NLP
    • AI & NLP
      • NLTK
      • SpaCy
      • GPT-3
    • ML & Data Science
      • Scikit-learn
      • TensorFlow
      • Keras
      • PyTorch
      • NumPy
      • Panda
      • Seaborn
      • Matplotlib
  • Hardware Wallets & Nodes
    • Developer Kits
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
    • API Providers
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Protocols
    • ERCs & EIPs
      • ERC 7702
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Web 2.0 Protocols
      • ERC 7702
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Web 3.0 Protocols
      • Infura
      • Moralis
      • Thirdweb
    • DEX, AMM, LPs
      • Ox Protocol
      • BullX
      • Cow Swap
      • MEVX
      • Photon
      • OKX
      • Pumpfun
      • Uniswap
      • Kyberswap
      • 1 Inch
      • Paraswap
      • Jupiter
      • Moonshot
      • GMGN
    • Cross-chain Swaps
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
    • Decentralised Wallets
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
      • Overview of wallets
    • Centralised Wallets
      • Developer Kits
        • Zerodev
        • Safe Wallet SDKs
        • Web3 Auth SDKs
        • Pimlico
      • API Providers
        • Alchemy
        • Infura
        • Moralis
        • Thirdweb
    • Trading On Chain Bots
      • Shuriken Bot
      • Magnum
      • Trojan
      • GMGN
      • Wave Bot
  • System Design
    • 🔀 Horizontal vs. Vertical Scaling
    • 📚Distributed Systems
    • 💾 Microservices
    • 🔒Hashing, Signatures, and Encryption in Microservices
  • Algorithms & Cryptography
    • MPC
      • Gap-Diffie-Hellman (GDH)
    • Sphinics+
    • Falcon Signature Scheme
    • ECC vs SLH DSA
    • Zero Knoledge Proof
    • Public - Private Key Cryptography
    • Hashing Algorithms
      • SHA 256
      • ERC 4337
      • ERC 6551
      • ERC 721 & 1155
      • ERC 7560
    • Signature Validation Algorithms
      • Threshold Signature Scheme(TSS)
      • RSA
      • ECDSA
      • EdDSA
      • SLHDSA (Sphinics+)
      • ECC
    • Encryption Algorithms
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Portfolio
    • Web 3.0 Projects
      • Frogpay
      • Tanthetaa
      • BLOK Capital
      • Quranium Blockchain
      • Promind
      • Pragmatic Play API Casino Game
    • Web 2.0 Projects
      • Alchemy
      • Infura
      • Moralis
      • Thirdweb
  • Code Testing Toolkits
    • Foundry
    • Hardhat
    • Bouncy Castle
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
  • Tech Automation Approach
    • CI/CD
    • Hardhat
    • Bouncy Castle
      • Zerodev
      • Safe Wallet SDKs
      • Web3 Auth SDKs
      • Pimlico
  • Articles
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • PUBLICATIONS & RESEARCH PAPERS
    • Papers
    • Talks
    • Patents
    • Standards
  • My Adventure Travels
    • Tokyo for EDCON'24 (Eth Speaker)
    • Kovilpatty for Quantum secure Blockchain
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • My Book Reading Summaries
    • Experiments Of Truth
    • Kai Chand the sar-e-aasman
    • Fountainhead
    • Medium Articles
    • EOF New Solidity Smart Contract Format
  • 📞 CONTACT
Powered by GitBook
On this page
  • Introduction to my Python Development Experience 🐍
  • Python Architecture 🏗️
  • Detailed Explanation of Python Architecture 🏗️
  • User Flow in Python Applications 🔄
  • Code Snippets: Python in Action 💻
  • Memory and Storage in Python 💾
  • Python Engineering Life Cycle 🔄
  • Real-Life Example: Web Scraper 🕸️
  • More Real-Life Python Applications 🚀
  • References and Further Reading 📚
  • Conclusion

Was this helpful?

🐍 Python

Python is a versatile, high-level programming language known for its simplicity and readability. It's widely used in various fields, from web development to data science and artificial intelligence.

PreviousAbout MohitNextPython Basics

Last updated 8 months ago

Was this helpful?

Introduction to my Python Development Experience 🐍

Python's simplicity, coupled with its powerful features, makes it an excellent choice for a wide range of applications. By understanding its core concepts and architecture, developers can leverage Python to build efficient, scalable, and maintainable solutions. 🚀🐍

Python Architecture 🏗️

Python's architecture is based on a layered model:

This architecture ensures Python's portability and efficiency across different platforms.

Detailed Explanation of Python Architecture 🏗️

1. Python Program 📜

This is the source code written by the developer. It's the highest level of abstraction in the Python architecture.

# Example Python Program
def greet(name):
    return f"Hello, {name}!"

print(greet("World"))

2. Python Interpreter 🔍

The interpreter reads and executes the Python code. It's responsible for translating the high-level Python code into a lower-level form that can be executed by the computer.

3. Python Virtual Machine (PVM) 🖥️

The PVM is the runtime engine of Python. It executes the bytecode generated by the interpreter.

4. Python Object/Type System 🧱

Python is object-oriented, and everything in Python is an object. The type system manages these objects and their interactions.

# Example of Python's object system
class Animal:
    def speak(self):
        pass

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

my_dog = Dog()
print(isinstance(my_dog, Animal))  # True
print(my_dog.speak())  # "Woof!"

5. Memory Allocator 💾

The memory allocator is responsible for managing Python's memory usage. It handles allocation and deallocation of memory for objects.

6. Operating System 💻

At the lowest level, Python interacts with the operating system for tasks like file I/O, network communication, and process management.

import os

# Example of Python interacting with the OS
print(os.getcwd())  # Get current working directory
os.mkdir("new_directory")  # Create a new directory

This layered architecture allows Python to be both powerful and portable, running on various platforms while providing a consistent interface to developers. 🚀

User Flow in Python Applications 🔄

A typical user flow in a Python application might look like this:

Code Snippets: Python in Action 💻

1. Object-Oriented Programming

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model
    
    def describe(self):
        return f"This is a {self.make} {self.model}."

my_car = Car("Tesla", "Model 3")
print(my_car.describe())  # Output: This is a Tesla Model 3.

2. Decorators

def timer(func):
    import time
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__} ran in {end-start:.2f} seconds")
        return result
    return wrapper

@timer
def slow_function():
    time.sleep(2)

slow_function()  # Output: slow_function ran in 2.00 seconds

Memory and Storage in Python 💾

Python uses a memory manager to handle the allocation and deallocation of memory. It employs reference counting and garbage collection to manage memory efficiently.

Memory Management Diagram

Python Engineering Life Cycle 🔄

The Python engineering life cycle typically involves these stages:

  1. Requirements Gathering 📝

  2. Design and Architecture 🏗️

  3. Development 👨‍💻

  4. Testing 🧪

  5. Deployment 🚀

  6. Maintenance and Updates 🔧

Let's dive deeper into each stage of the Python Engineering Life Cycle:

1. Requirements Gathering 📝

This initial stage involves understanding the project needs, user expectations, and technical constraints.

Example: Creating a user story for a web application

# User Story
user_story = {
    "as_a": "registered user",
    "i_want_to": "reset my password",
    "so_that": "I can regain access to my account if I forget my password"
}
print(f"As a {user_story['as_a']}, I want to {user_story['i_want_to']} so that {user_story['so_that']}.")

2. Design and Architecture 🏗️

This stage involves creating a blueprint for the software, including system architecture, database design, and user interface mockups.

Example: Creating a simple class diagram

class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email

    def login(self):
        pass

    def logout(self):
        pass

class Admin(User):
    def __init__(self, username, email, access_level):
        super().__init__(username, email)
        self.access_level = access_level

    def manage_users(self):
        pass

3. Development 👨‍💻

This is where the actual coding takes place, implementing the design and functionality specified in earlier stages.

Example: Implementing a simple feature

def calculate_discount(price, discount_percentage):
    """
    Calculate the discounted price of an item.
    
    Args:
    price (float): The original price of the item.
    discount_percentage (float): The discount percentage (0-100).
    
    Returns:
    float: The discounted price.
    """
    if not 0 <= discount_percentage <= 100:
        raise ValueError("Discount percentage must be between 0 and 100.")
    
    discount_amount = price * (discount_percentage / 100)
    discounted_price = price - discount_amount
    return round(discounted_price, 2)

# Example usage
original_price = 100
discount = 20
new_price = calculate_discount(original_price, discount)
print(f"Original price: ${original_price}")
print(f"Discount: {discount}%")
print(f"New price: ${new_price}")

4. Testing 🧪

This stage involves various levels of testing to ensure the software works as expected and is free of bugs.

graph TD
    A[Unit Testing] --> B[Integration Testing]
    B --> C[System Testing]
    C --> D[Acceptance Testing]
    D --> E[Performance Testing]
    E --> F[Security Testing]

Example: Writing a unit test

import unittest

class TestDiscountCalculator(unittest.TestCase):
    def test_calculate_discount(self):
        self.assertEqual(calculate_discount(100, 20), 80)
        self.assertEqual(calculate_discount(50, 10), 45)
        
    def test_zero_discount(self):
        self.assertEqual(calculate_discount(100, 0), 100)
        
    def test_full_discount(self):
        self.assertEqual(calculate_discount(100, 100), 0)
        
    def test_invalid_discount(self):
        with self.assertRaises(ValueError):
            calculate_discount(100, 101)
        with self.assertRaises(ValueError):
            calculate_discount(100, -1)

if __name__ == '__main__':
    unittest.main()

5. Deployment 🚀

This stage involves making the software available to users, often involving server setup, database migrations, and continuous integration/continuous deployment (CI/CD) pipelines.

graph TD
    A[Build Application] --> B[Run Tests]
    B --> C{Tests Pass?}
    C -->|Yes| D[Deploy to Staging]
    C -->|No| E[Fix Issues]
    E --> A
    D --> F[User Acceptance Testing]
    F --> G{UAT Pass?}
    G -->|Yes| H[Deploy to Production]
    G -->|No| E

Example: A simple deployment script

import os
import subprocess

def deploy():
    # Pull latest changes
    subprocess.run(["git", "pull", "origin", "main"])
    
    # Install dependencies
    subprocess.run(["pip", "install", "-r", "requirements.txt"])
    
    # Run database migrations
    subprocess.run(["python", "manage.py", "migrate"])
    
    # Collect static files
    subprocess.run(["python", "manage.py", "collectstatic", "--noinput"])
    
    # Restart the application server (e.g., gunicorn)
    subprocess.run(["sudo", "systemctl", "restart", "myapp"])

if __name__ == "__main__":
    deploy()
    print("Deployment completed successfully!")

6. Maintenance and Updates 🔧

This ongoing stage involves fixing bugs, adding new features, and ensuring the software continues to meet user needs and technological standards.

graph TD
    A[Monitor Application] --> B{Issues Detected?}
    B -->|Yes| C[Analyze Problem]
    B -->|No| A
    C --> D[Develop Fix]
    D --> E[Test Fix]
    E --> F[Deploy Update]
    F --> A
    A --> G{New Feature Request?}
    G -->|Yes| H[Assess Feasibility]
    G -->|No| A
    H --> I[Develop Feature]
    I --> J[Test Feature]
    J --> K[Deploy Feature]
    K --> A

Example: A function to check for and apply updates

import requests
import subprocess

def check_and_apply_updates():
    current_version = "1.0.0"
    update_url = "<https://api.example.com/check-update>"
    
    # Check for updates
    response = requests.get(update_url, params={"version": current_version})
    update_info = response.json()
    
    if update_info["update_available"]:
        print(f"New version available: {update_info['latest_version']}")
        
        # Download update
        update_file = requests.get(update_info["download_url"])
        with open("update.zip", "wb") as f:
            f.write(update_file.content)
        
        # Apply update
        subprocess.run(["unzip", "update.zip"])
        subprocess.run(["pip", "install", "-r", "requirements.txt"])
        subprocess.run(["python", "manage.py", "migrate"])
        
        print("Update applied successfully!")
    else:
        print("No updates available.")

if __name__ == "__main__":
    check_and_apply_updates()

By following this life cycle, Python developers can create robust, maintainable, and scalable applications that meet user needs and adapt to changing requirements over time. 🐍🚀

Real-Life Example: Web Scraper 🕸️

Let's create a simple web scraper to demonstrate Python's capabilities:

import requests
from bs4 import BeautifulSoup

def scrape_quotes():
    url = "<http://quotes.toscrape.com>"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    quotes = soup.find_all('span', class_='text')
    authors = soup.find_all('small', class_='author')
    
    for i in range(len(quotes)):
        print(f"{quotes[i].text} - {authors[i].text}")

scrape_quotes()

This script scrapes quotes and their authors from a website, demonstrating Python's ability to interact with web content.

More Real-Life Python Applications 🚀

1. Image Processing Application 🖼️

Let's create an image processing application that applies filters to images using Python and the Pillow library.

graph TD
    A[Load Image] --> B[Apply Filter]
    B --> C[Save Processed Image]
    B --> D[Display Image]

Here's a code snippet that demonstrates this functionality:

from PIL import Image, ImageFilter

def apply_filter(image_path, filter_type):
    with Image.open(image_path) as img:
        if filter_type == "blur":
            filtered_img = img.filter(ImageFilter.BLUR)
        elif filter_type == "contour":
            filtered_img = img.filter(ImageFilter.CONTOUR)
        elif filter_type == "emboss":
            filtered_img = img.filter(ImageFilter.EMBOSS)
        else:
            raise ValueError("Unsupported filter type")
        
        filtered_img.save(f"filtered_{filter_type}.jpg")
        filtered_img.show()

apply_filter("example.jpg", "blur")

2. Data Analysis and Visualization Tool 📊

Let's create a data analysis and visualization tool using Python, pandas, and matplotlib.

graph TD
    A[Load Data] --> B[Process Data]
    B --> C[Analyze Data]
    C --> D[Visualize Results]

Here's a code snippet that demonstrates this functionality:

import pandas as pd
import matplotlib.pyplot as plt

def analyze_and_visualize(data_path):
    # Load and process data
    df = pd.read_csv(data_path)
    df['Date'] = pd.to_datetime(df['Date'])
    df.set_index('Date', inplace=True)
    
    # Analyze data
    monthly_avg = df.resample('M').mean()
    
    # Visualize results
    plt.figure(figsize=(12, 6))
    plt.plot(monthly_avg.index, monthly_avg['Temperature'], label='Monthly Average')
    plt.title('Monthly Average Temperature')
    plt.xlabel('Date')
    plt.ylabel('Temperature (°C)')
    plt.legend()
    plt.grid(True)
    plt.show()

analyze_and_visualize("temperature_data.csv")

3. Machine Learning Model for Prediction 🤖

Let's create a simple machine learning model for prediction using Python and scikit-learn.

graph TD
    A[Load Data] --> B[Preprocess Data]
    B --> C[Split Data]
    C --> D[Train Model]
    D --> E[Evaluate Model]
    E --> F[Make Predictions]

Here's a code snippet that demonstrates this functionality:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np

def predict_house_prices(X, y):
    # Split the data
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # Train the model
    model = LinearRegression()
    model.fit(X_train, y_train)
    
    # Evaluate the model
    y_pred = model.predict(X_test)
    mse = mean_squared_error(y_test, y_pred)
    rmse = np.sqrt(mse)
    
    print(f"Root Mean Squared Error: {rmse}")
    
    # Make a prediction
    new_house = np.array([[1500, 3, 2]])  # 1500 sq ft, 3 bedrooms, 2 bathrooms
    predicted_price = model.predict(new_house)
    print(f"Predicted price for the new house: ${predicted_price[0]:,.2f}")

# Example usage
X = np.array([[1000, 2, 1], [1500, 3, 2], [1200, 2, 1], [1700, 3, 2]])  # Features: area, bedrooms, bathrooms
y = np.array([200000, 300000, 220000, 350000])  # Target: house prices

predict_house_prices(X, y)

In this example, we use a simple linear regression model to predict house prices based on features like area, number of bedrooms, and number of bathrooms.

Mathematical Equations in Python 🧮

Python can also be used to solve complex mathematical equations. Here's an example using the SymPy library for symbolic mathematics:

import sympy as sp

def solve_equation():
    # Define the variable
    x = sp.Symbol('x')
    
    # Define the equation
    equation = sp.Eq(x**2 - 4*x + 4, 0)
    
    # Solve the equation
    solution = sp.solve(equation)
    
    print(f"The solutions to the equation {equation} are:")
    for sol in solution:
        print(sol)

    # Calculate the derivative of a function
    f = x**3 - 6*x**2 + 11*x - 6
    df = sp.diff(f, x)
    print(f"\\nThe derivative of f(x) = {f} is:")
    print(f"f'(x) = {df}")

solve_equation()

This script solves the quadratic equation x² - 4x + 4 = 0 and calculates the derivative of the function f(x) = x³ - 6x² + 11x - 6.

These examples demonstrate the versatility of Python in various domains, from image processing and data analysis to machine learning and symbolic mathematics. 🐍💻

References and Further Reading 📚

For more in-depth information and examples, check out these GitHub repositories:

These resources provide excellent examples of Python's capabilities and best practices in real-world applications.

Conclusion

Python's simplicity, coupled with its powerful features, makes it an excellent choice for a wide range of applications. By understanding its core concepts and architecture, developers can leverage Python to build efficient, scalable, and maintainable solutions. 🚀🐍

CPython (Python's core implementation)
Requests library for HTTP requests
Pandas for data manipulation and analysis