Learn Python Coding
38.7K subscribers
1.06K photos
37 videos
24 files
853 links
Learn Python through simple, practical examples and real coding ideas. Clear explanations, useful snippets, and hands-on learning for anyone starting or improving their programming skills.

Admin: @HusseinSheikho || @Hussein_Sheikho
Download Telegram
✨ Object Mutability | Python Best Practices ✨

πŸ“– Guidelines and best practices that will help you use mutable and immutable data types in Python.

🏷️ #Python
πŸ‘©β€πŸ’» FREE 2026 IT Learning Kits Giveaway

πŸ”₯Whether you're preparing for #Cisco #AWS #PMP #Python #Excel #Google #Microsoft #AI or any other in-demand certification – SPOTO has got you covered!

🎁 Explore Our FREE Study Resources
Β·IT Certs E-book : https://bit.ly/3YvSMHL
Β·IT exams skill Test : https://bit.ly/4r4VHnd
Β·Python, ITIL, PMP, Excel, Cyber Security, cloud, SQL Courses : https://bit.ly/4qNWl8r
Β·Free AI online preparation material and support tools : https://bit.ly/4qKiKTN

πŸ”— Need IT Certs Exam Help? contact: wa.link/dm4kyz
πŸ“² Join IT Study Group for insider tips & expert support:
https://chat.whatsapp.com/BEQ9WrfLnpg1SgzGQw69oM
❀1
✨ Public API Surface | Python Best Practices ✨

πŸ“– Guidelines and recommendations for using public and non-public names in your Python code.

🏷️ #Python
✨ Project Layout | Python Best Practices ✨

πŸ“– Guidelines and best practices for structuring and organizing your Python projects effectively.

🏷️ #Python
A generator in Python is a function that returns an iterator object instead of a single result.

It differs from regular functions in that it uses the yield keyword instead of return. Each call to next(generator) produces the next value from the sequence.

Example:

def multiple_generator(x, n):
    for i in range(1, n + 1):
        yield x * i

multiples_of_5 = multiple_generator(5, 3)

print(next(multiples_of_5))  # 5
print(next(multiples_of_5))  # 10
print(next(multiples_of_5))  # 15



https://t.me/DataScience4 ❀️
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ‘1
✨ Optimization | Python Best Practices ✨

πŸ“– Guidelines and best practices for optimizing your Python code.

🏷️ #Python
✨ Constants | Python Best Practices ✨

πŸ“– Guidelines and best practices for using constants in your Python code.

🏷️ #Python
✨ How to Integrate ChatGPT's API With Python Projects ✨

πŸ“– Learn how to use the ChatGPT Python API with the OpenAI library to build AI-powered features in your Python applications.

🏷️ #intermediate #ai #api
✨ Dependency Management | Python Best Practices ✨

πŸ“– Guidelines and best practices for dependency management in Python.

🏷️ #Python
✨ Python's deque: Implement Efficient Queues and Stacks ✨

πŸ“– Use a Python deque to efficiently append and pop elements from both ends of a sequence, build queues and stacks, and set maxlen for history buffers.

🏷️ #intermediate #datastructures #python #stdlib
❀1
✨ Reference: Python’s Built-in Exceptions ✨

πŸ“– Predefined error classes that the Python interpreter uses to handle various error conditions.

🏷️ #47_terms
✨ Reference: Python Best Practices ✨

πŸ“– Widely accepted and established guidelines, conventions, tips, and best practices for Python programmers.

🏷️ #23_terms
Python tip:

You can make dataclass fields immutable by setting frozen=True.
In this case, fields cannot be mutated after the instance is created.

Example belowπŸ‘‡

from dataclasses import dataclass

@dataclass(frozen=True)
class Color:
    name: str
    hex_value: str

color = Color("red", "#FF0000")

# color.name = "blue"  # will raise FrozenInstanceError


πŸ‘‰ @codeprogrammer
Please open Telegram to view this post
VIEW IN TELEGRAM
❀4πŸ‘1
✨ assertion | Python Glossary ✨

πŸ“– A debugging aid that tests a condition as an internal self-check.

🏷️ #Python
❀1
✨ dataframe | Python Glossary ✨

πŸ“– A data structure for working with tabular data in Python.

🏷️ #Python
❀2
Accelerating the Sieve of Eratosthenes

1. Quickly recall the algorithm

Classic implementation:

def eratosthenes(n):
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False

    for i in range(2, int(n ** 0.5) + 1):
        if is_prime[i]:
            for j in range(i * i, n + 1, i):
                is_prime[j] = False

    return is_prime


Time β€” O(N log log N). We're not interested in the asymptotics, but in how much we can speed up the implementation itself.

2. Optimization #1 β€” don't bother with even numbers

The idea is simple:

* all even numbers except 2 are composite
* if we only work with odd numbers, we reduce the array size and the number of iterations by about half

Implementation:

def eratosthenes_odd(n):
    if n < 2:
        return []

    size = (n + 1) // 2
    is_prime = [True] * size
    is_prime[0] = False

    limit = int(n ** 0.5) // 2
    for i in range(1, limit + 1):
        if is_prime[i]:
            p = 2 * i + 1
            start = (p * p) // 2
            for j in range(start, size, p):
                is_prime[j] = False

    return is_prime


3. Optimization #2 β€” use bytearray instead of list[bool]

Thought:

* bool in Python is an object
* bytearray is a tightly packed buffer
* less overhead and better fits into the CPU cache

Example:

def eratosthenes_bytearray(n):
    is_prime = bytearray(b"\x01") * (n + 1)
    is_prime[0:2] = b"\x00\x00"

    for i in range(2, int(n ** 0.5) + 1):
        if is_prime[i]:
            for j in range(i * i, n + 1, i):
                is_prime[j] = 0

    return is_prime


4. Optimization #3 β€” a hybrid of the two approaches

def eratosthenes_fast(n):
    if n < 2:
        return []

    size = (n + 1) // 2
    is_prime = bytearray(b"\x01") * size
    is_prime[0] = 0

    limit = int(n ** 0.5) // 2
    for i in range(1, limit + 1):
        if is_prime[i]:
            p = 2 * i + 1
            start = (p * p) // 2
            is_prime[start::p] = b"\x00" * (((size - start - 1) // p) + 1)

    return is_prime


5. Time comparison

Test with n = 10_000_000:

>>> eratosthenes.py
real  0.634s

>>> eratosthenes_odd.py
real  0.245s

>>> eratosthenes_bytearray.py
real  0.801s

>>> eratosthenes_fast.py
real  0.028s


Conclusions:

* skipping even numbers (#1) gives ~2.6Γ— speedup
* bytearray itself doesn't speed up β€” it's more about memory
* the hybrid (#3) gives ~22.6Γ— speedup

Key trick in #3:

is_prime[start::p] = b"\x00" * (((size - start - 1) // p) + 1)


There's no Python loop here β€” everything is done by a C-level operation on the slice. On such tasks, this makes a huge difference.

General idea: in Python, we often speed up not the asymptotics, but the memory model and the number of passes over the data. Loops + memory β†’ the main factors.

πŸ‘‰ @DataScience4
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5