Learn Python Coding
39.1K subscribers
636 photos
30 videos
24 files
392 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
Learn Python Coding
Lesson: Mastering Python Lists: Common Pitfalls and Best Practices ๐Ÿ 1. The Peril of Shallow Copies: Understanding References ๐Ÿง  Description: When you assign one list to another using =, you're not creating a new list; you're creating a new reference to theโ€ฆ
codes = ["A", "B", "C"]
found = False
for code in codes:
    if code == "B":
        found = True
        break
if found:
    print("Incorrect: Code B found (less efficient).")


Brief Explanation: The in operator is optimized for membership checks, offering better performance and cleaner code than manual loops, especially for larger lists.

---

5. Avoiding Unnecessary List Conversions

Description: Many functions and methods return iterators or generator objects for efficiency. Converting these directly to a list without need can waste memory and computation if you only need to process elements one by one.

Correct Usage: Process iterators directly when possible, convert to list only if multiple passes or random access is needed.
squares_gen = (x*x for x in range(5)) # Generator expression
for s in squares_gen: # Process elements one by one
    print(f"Correct: {s}", end=" ") # Output: 0 1 4 9 16
print()

# If you need the full list:
squares_list = list(x*x for x in range(5))
print(f"Correct (list conversion): {squares_list}") # Output: [0, 1, 4, 9, 16]


Incorrect Usage: Unnecessarily converting iterators to lists when single-pass processing suffices.
data_stream = map(str.upper, ['apple', 'banana', 'cherry'])
# If you only need to print them once:
full_list = list(data_stream) # Unnecessary list creation
for item in full_list:
    print(f"Incorrect: {item}", end=" ") # Output: APPLE BANANA CHERRY
print()


Brief Explanation: Iterators/generators are memory-efficient for single-pass operations. Convert to list() only when random access, repeated iteration, or a material collection is strictly required.

https://t.me/pythonRe ๐ŸŒŸ
Please open Telegram to view this post
VIEW IN TELEGRAM
โค7
This media is not supported in your browser
VIEW IN TELEGRAM
๐Ÿง Python Cheatsheet โ€” a convenient cheat sheet for Python that really saves time at work!

The repository contains a summary of key topics: from basic syntax and data structures to working with files, environments, and OOP with classes and magic methods. Everything is presented compactly, without unnecessary theory, with examples that can be immediately applied in code.

Repo: https://github.com/onyxwizard/python-cheatsheet

https://t.me/pythonRe ๐Ÿ‘ฉโ€๐Ÿ’ป
โค4
๐Ÿ“‚ Reminder on Python data structures!

For example, a list supports indexing, is mutable, and stores duplicates, while a set stores only unique elements and has no order.

The picture shows a brief summary of the main data types and their properties: order, mutability, duplicates, and indexing.

Save it to remember!

๐Ÿ‘‰ @pythonRe
Please open Telegram to view this post
VIEW IN TELEGRAM
โค5๐Ÿ‘1๐Ÿ‘Ž1
๐— ๐—ฎ๐˜€๐˜๐—ฒ๐—ฟ_๐—ฃ๐˜†๐˜๐—ต๐—ผ๐—ป_๐˜๐—ต๐—ฒ_๐—ฅ๐—ถ๐—ด๐—ต๐˜_๐—ช๐—ฎ๐˜†.pdf
6.6 MB
Master Python the Right Way โ€“ Without Procrastination. ๐Ÿโœจ

When I first started learning Python, I quickly realized:

You can't master a programming language just by reading syntax or watching tutorials. ๐Ÿ“š๐Ÿšซ

Real growth happens when you practice, build, and solve problems on your own. ๐Ÿ› ๐Ÿ’ป

That's exactly why I've compiled a collection of Python programs โ€“ designed to take you from basics to advanced logic-building. ๐Ÿ“ˆ๐Ÿง 

What is this collection about? ๐Ÿค”

โœ”๏ธ Beginner to advanced programs with clear explanations
โœ”๏ธ Pattern-based exercises to strengthen core fundamentals
โœ”๏ธ Problem-solving programs that sharpen logical thinking

Why is this important? ๐ŸŒŸ

You don't just learn "how to code", you start learning "how to think like a programmer". ๐Ÿง โšก๏ธ

This is perfect for: ๐ŸŽฏ

โ€ข Preparing for technical interviews ๐Ÿค
โ€ข Participating in coding challenges ๐Ÿ†
โ€ข Building real-world Python projects ๐Ÿš€

https://t.me/pythonRe
โค7๐Ÿ‘2
There's a floating-point number in Python and you need to output it as a percentage - use the % format in the f-string

x = .023
print(f'{x:.2%}')  # 2.30%

x = .02375
print(f'{x:.2%}')  # 2.38% -- rounded off!

x = 1.02375
print(f'{x:.2%}')  # 102.38%


๐Ÿ‘‰ @PythonRe
Please open Telegram to view this post
VIEW IN TELEGRAM
โค7
Unlock Your AI Career
Join our Data Science Full Stack with AI Course โ€“ a real-time, project-based online training designed for hands-on mastery.
Core Topics Covered
โ€ข  Data Science using Python with Generative AI: Build end-to-end data pipelines, from data wrangling to deploying AI models with Python libraries like Pandas, Scikit-learn, and Hugging Face transformers.
โ€ข  Prompt Engineering: Craft precise prompts to maximize output from models like GPT and Gemini for accurate, creative results.
โ€ข  AI Agents & Agentic AI: Develop autonomous agents that reason, plan, and act using frameworks like Lang Chain for real-world automation.
Why Choose This Course?
This training emphasizes live sessions, industry projects, and practical skills for immediate job impact, similar to top programs offering 100+ hours of Python-to-AI progression.
Ready to start? Call/WhatsApp: (+91)-7416877757
WhatsApp Link:-
http://wa.me/+917416877757
โค4
Python Basics Arrays & Loops ๐Ÿ

Essential you need to start strong ๐Ÿ’ช

https://t.me/pythonRe ๐Ÿ”—
Please open Telegram to view this post
VIEW IN TELEGRAM
โค5๐Ÿ‘2
Python: simple things that improve code

If you write like this:

if type(x) == str:
    print("This is a string")

it might work, but it breaks on subclasses of str.

It's better to use isinstance(). It takes into account inheritance and is more consistent with polymorphism.

if isinstance(x, str):
    print("This is a string")

This variant will work for str and its subclasses.

Conclusion: type(x) == str is only suitable for simple cases, but it's fragile. isinstance(x, str) is a more stable and correct option almost always.

https://t.me/pythonRe ๐Ÿคฉ
Please open Telegram to view this post
VIEW IN TELEGRAM
โค7
Why can't you use mutable default values in constructors?

If you set a list or dictionary as the default value, the object is created once and then reused by all instances.
class User:
    def __init__(self, tags=[]):
        self.tags = tags

This results in a change in one instance affecting the others:
u1 = User(); u2 = User()
u1.tags.append("x"); print(u2.tags)

default_factory creates a new object each time the constructor is called, eliminating shared state:
field(default_factory=list)

Thus, each instance receives an independent data structure:
User().tags is User().tags

๐Ÿ”ฅ Using default_factory is an important practice when working with mutable types and prevents hard-to-detect state errors.

https://t.me/pythonRe ๐Ÿ‘
Please open Telegram to view this post
VIEW IN TELEGRAM
โค9๐Ÿ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
๐Ÿ˜Ž The Algorithms Python โ€” a huge collection of algorithms in Python! ๐Ÿ

The repository contains a large number of algorithms and data structures: sorting, graphs, trees, search, dynamic programming, cryptography, and much more. Everything is implemented in pure Python with clear code and a convenient structure. It's perfect for studying algorithms through real examples.

I'll leave a link: GitHub
https://github.com/TheAlgorithms/Python

๐Ÿ‘‰ https://t.me/pythonRe
Please open Telegram to view this post
VIEW IN TELEGRAM
โค8
Exploring pathlib for Working with Paths!
Many projects still use os.path for path operations: join, dirname, exists, and more. It works, but the code quickly becomes cluttered with string manipulations and harder to read โ€” especially when there are many paths being actively combined.

Since Python 3.4, there's pathlib โ€” an object-oriented API for working with files and directories.

Importing the module is simple:

from pathlib import Path


You can create a path like any regular object:

path = Path("data/users.json")


When working with Path and the / operator, the correct separators for the current OS are used automatically. This keeps the code portable between Linux, macOS, and Windows without extra checks.

If you need an absolute path, use resolve():

print(path.resolve())


Very often when working with files, you need to check if a path exists:

if path.exists():
    print("File found")


Pathlib also lets you quickly determine the type of file system object:

path.is_file()
path.is_dir()


The Path object has convenient properties for getting path parts. This eliminates manual string parsing and working with split().

print(path.name)    # users.json
print(path.stem)    # users
print(path.suffix)  # .json
print(path.parent)  # data


For joining paths, the / operator is used, which looks noticeably cleaner and is easier to read compared to os.path.join:

base = Path("logs")
file_path = base / "2026" / "app.log"


Creating directories is also compact and convenient:

Path("backup/archive").mkdir(parents=True, exist_ok=True)


Here: parents=True creates nested directories; exist_ok=True doesn't raise an error if the folder already exists.

For reading and writing text files, there are built-in methods that cover most everyday tasks:

config = Path("config.txt")

config.write_text("debug=true", encoding="utf-8")

content = config.read_text(encoding="utf-8")
print(content)


For binary data, read_bytes() and write_bytes() methods are available.

You can iterate through directory contents using iterdir():

for file in Path("logs").iterdir():
    print(file)


If you need to search for files by pattern, use glob():

for py_file in Path(".").glob("*.py"):
    print(py_file)


And for recursive directory traversal, there's rglob():

for file in Path(".").rglob("*.json"):
    print(file)


Practical example โ€” finding logs older than a certain date. This is a more real-world task:

from pathlib import Path
from datetime import datetime

logs = Path("logs")
limit_date = datetime(2026, 1, 1)

for file in logs.glob("*.log"):
    modified = datetime.fromtimestamp(file.stat().st_mtime)

    if modified < limit_date:
        print(file.name, modified)


The stat() method lets you get file metadata: size, modification time, permissions, and other system data.

Deleting files and directories is also built directly into the Path API:

path.unlink()  # file
path.rmdir()   # empty directory


It's important to note that pathlib doesn't fully replace shutil or os. For example, for copying files, recursive directory deletion, or complex permission operations, additional modules are usually used.



๐Ÿ”ฅ pathlib makes working with the file system noticeably cleaner: less string operations, better readability, and more predictable code when working with paths and files.



#Python #Pathlib #Programming #Coding #Developer #SoftwareEngineering #TechTips #LearnPython #PythonTips #FileSystem

https://t.me/pythonRe ๐ŸŒŸ
Please open Telegram to view this post
VIEW IN TELEGRAM
โค7
โ” Interview question

What tools are used for error monitoring in Python services?

Answer: Most often, Sentry, centralized logging, and metrics are used. Sentry collects stack traces, context, and shows the frequency of errors.

It's also important to set up alerts - a sharp increase in exceptions usually signals problems after a release or a service degradation.

tags: #interview

https://t.me/pythonRe โœ…
Please open Telegram to view this post
VIEW IN TELEGRAM
โค5
20 ADVANCED Python MCQ.pdf
4.4 MB
๐—ฃ๐—ฟ๐—ฒ๐—ถ๐—บ๐—ถ๐—ฎ๐—น ๐—ฃ๐˜†๐˜๐—ต๐—ผ๐—ป ๐—จ๐—น๐˜๐—ถ๐—บ๐—ฎ๐˜๐—ฒ ๐—š๐˜‚๐—ถ๐—ฑ๐—ฒ! ๐Ÿš€๐Ÿโœจ

๐—œ๐—ป๐—ฝ๐˜‚๐˜/๐—ข๐˜‚๐˜๐—ฝ๐˜‚๐˜ ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ“ฅ๐Ÿ“ค
- print()
- input()
- format()

๐——๐—ฎ๐˜๐—ฎ ๐—ง๐˜†๐—ฝ๐—ฒ ๐—–๐—ผ๐—ป๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ”„
- int()
- float()
- str()
- bool()
- complex()
- list()
- tuple()
- set()
- dict()
- frozenset()
- bytes()
- bytearray()
- memoryview()

๐— ๐—ฎ๐˜๐—ต๐—ฒ๐—บ๐—ฎ๐˜๐—ถ๐—ฐ๐—ฎ๐—น ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿงฎ๐Ÿ“
- abs()
- pow()
- round()
- divmod()
- sum()
- min()
- max()

๐—ฆ๐—ฒ๐—พ๐˜‚๐—ฒ๐—ป๐—ฐ๐—ฒ & ๐—–๐—ผ๐—น๐—น๐—ฒ๐—ฐ๐˜๐—ถ๐—ผ๐—ป ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ“Š๐Ÿ“‘
- len()
- sorted()
- range()
- zip()
- enumerate()
- reversed()
- all()
- any()

๐—ง๐˜†๐—ฝ๐—ฒ & ๐—œ๐—ฑ๐—ฒ๐—ป๐˜๐—ถ๐˜๐˜† ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ”๐Ÿ†”
- type()
- id()
- isinstance()
- issubclass()

๐—™๐—ถ๐—น๐—ฒ ๐—›๐—ฎ๐—ป๐—ฑ๐—น๐—ถ๐—ป๐—ด ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ“‚๐Ÿ“
- open()
- close()
- read()
- write()
- seek()
- tell()

๐—ฆ๐˜๐—ฟ๐—ถ๐—ป๐—ด ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ”ค๐Ÿ” 
- ord()
- chr()
- ascii()
- repr()

๐—จ๐˜๐—ถ๐—น๐—ถ๐˜๐˜† ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ› โš™๏ธ
- help()
- dir()
- eval()
- exec()
- hash()

๐—Ÿ๐—ผ๐—ด๐—ถ๐—ฐ๐—ฎ๐—น & ๐—•๐—ถ๐—ป๐—ฎ๐—ฟ๐˜† ๐—–๐—ผ๐—ป๐˜ƒ๐—ฒ๐—ฟ๐˜€๐—ถ๐—ผ๐—ป ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿง ๐Ÿ”ข
- bin()
- oct()
- hex()
- bool()

๐— ๐—ฒ๐—บ๐—ผ๐—ฟ๐˜† & ๐—ข๐—ฏ๐—ท๐—ฒ๐—ฐ๐˜ ๐—›๐—ฎ๐—ป๐—ฑ๐—น๐—ถ๐—ป๐—ด ๐—™๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿ’พ๐Ÿ“ฆ
- memoryview()
- object()
- callable()


#PythonGuide #PythonFunctions #CodingLife #LearnPython #DevCommunity #PyTips

https://t.me/pythonRe โœ…
Please open Telegram to view this post
VIEW IN TELEGRAM
โค4
๐Ÿ™๐Ÿ’ธ 500$ FOR THE FIRST 500 WHO JOIN THE CHANNEL! ๐Ÿ™๐Ÿ’ธ

Join our channel today for free! Tomorrow it will cost 500$!

https://t.me/+-WZeIeP8YI8wM2E6

You can join at this link! ๐Ÿ‘†๐Ÿ‘‡

https://t.me/+-WZeIeP8YI8wM2E6
โค3
If you work with Python, remember a simple rule: do not modify a list while iterating over it. ๐Ÿ๐Ÿ›‘ This can lead to unexpected results because the iterator does not track structural changes.

Here is an example that looks logical but works incorrectly: ๐Ÿค”

items = [1, 2, 2, 3, 4]
for item in items:
    if item == 2:
        items.remove(item)
print(items)
# Output: [1, 2, 3, 4]


It seems that all 2s should disappear, but one remains. โ“ Why?

After removing an element, the list shifts, but the loop moves on โ€” as a result, some values are simply skipped. ๐Ÿ”„๐Ÿšซ

How to do it correctly โ€” iterate over a copy: โœ…

for item in items[:]:
    if item == 2:
          items.remove(item)
print(items)
# Output: [1, 3, 4]


Even better โ€” use list comprehension: ๐Ÿš€

items = [x for x in items if x != 2]

Conclusion: ๐Ÿ do not modify a collection during iteration. This can lead to skipped elements, duplication, or even errors during execution. ๐Ÿ› ๏ธ๐Ÿšง

#Python #Coding #Programming #Debugging #TechTips #PythonTips
โค2
Many applications require mapping strings to integers. In Python, this usually looks like:

d = {"apple": 100, "banana": 200, "cherry": 300}


If there are 1 million keys, this can consume a lot of memory โ€” more than 100 bytes per key.
Our elephant has published a new library that uses about 9 bytes per key. Yes, only 9 bytes. Usage looks like this:

from fastconstmap import ConstMap

d = {"apple": 100, "banana": 200, "cherry": 300}
m = ConstMap(d)

m["apple"]                  # -> 100
m.get_many(["banana", "cherry"])  # -> [200, 300]


It can be significantly faster (for example, up to 2 times in some cases) than the standard dictionary. It can also be serialized and deserialized to disk or network for convenient reuse.

https://pypi.org/project/fastconstmap/

github: https://github.com/lemire/fastconstmap

๐Ÿ‘‰ @PythonRe
Please open Telegram to view this post
VIEW IN TELEGRAM
โค6
The Python library itertools contains many useful functions. ๐Ÿโœจ

One of them is compress(), which returns an iterator over the elements from data, for which the corresponding element in selectors is equal to True. ๐Ÿ”๐Ÿ’ป

Here's an example: ๐Ÿ“๐Ÿ‘‡

#Python #Programming #Itertools #Coding #Tech #DataScience
๐Ÿ”ฅ2
Cheat sheet on the basics of Python: ๐Ÿ๐Ÿ“š

basic syntax and language rules ๐Ÿ“
scalar types โ€” basic data types (int, float, bool, str, NoneType) ๐Ÿ”ข

datetime โ€” working with date and time ๐Ÿ“…โฐ

data structures โ€” Python data structures (list, tuple, dict, set) ๐Ÿ—„

list โ€” mutable lists for storing data collections ๐Ÿ“‹
tuple โ€” immutable sequences of values ๐Ÿ”’
dict (hash map) โ€” storing data in a key-value format ๐Ÿ—
set โ€” unique elements without order ๐Ÿ”˜

slicing โ€” obtaining parts of sequences through indices and step โœ‚๏ธ

module/library โ€” connecting modules and libraries ๐Ÿ”Œ

help functions โ€” using help() and dir() to explore the Python API ๐Ÿ› 

#Python #Coding #DataScience #Programming #Tech #DevCommunity
โค5๐Ÿ”ฅ3๐Ÿ‘2
Do you know that Python can shift sequences without slicing and creating new lists? ๐Ÿค”

When you need to cyclically shift data, many use slicing:

data = data[-1:] + data[:-1]

But deque.rotate() does this at the level of the data structure and usually works more efficiently for cyclical operations. ๐Ÿš€

q.rotate(1)

A negative value rotates the queue in the other direction. โฌ…๏ธ

q.rotate(-2)

This is useful for ring buffers, task schedulers, cyclical queues, and round-robin algorithms. ๐Ÿ”„

workers.rotate(-1)

๐Ÿ”ฅ deque.rotate() allows you to implement cyclical data structures without manual index logic and without creating new lists. ๐Ÿ’ก

#Python #Programming #Deque #CodingTips #Tech #DevCommunity
โค7