Learn Python Coding
38.8K subscribers
607 photos
27 videos
22 files
364 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
Django Features and Libraries - course

Exploring Django Features and Libraries
The "Django Features and Libraries" course is designed to help learners deepen their understanding of Django by exploring its advanced features and built-in libraries. Django is a high-level Python web framework that promotes rapid development and clean, pragmatic design. This course provides hands-on experience in leveraging Django’s powerful tools to build scalable, efficient, and secure web applications.

Enroll Free: https://www.coursera.org/learn/django-features-libraries

#python #programming #developer #programmer #coding #coder #softwaredeveloper #computerscience #webdev #webdeveloper #webdevelopment #pythonprogramming #pythonquiz #ai #ml #machinelearning #datascience #django

https://t.iss.one/DataScience4
πŸ‘6
Data Management With Python, SQLite, and SQLAlchemy

In this tutorial, you’ll learn how to use:

1⃣ Flat files for data storage
πŸ”’ SQL to improve access to persistent data
πŸ”’ SQLite for data storage
πŸ”’ SQLAlchemy to work with data as Python objects

Enroll Free: https://realpython.com/python-sqlite-sqlalchemy/

#python #programming #developer #programmer #coding #coder #softwaredeveloper #computerscience #webdev #webdeveloper #webdevelopment #pythonprogramming #pythonquiz #ai #ml #machinelearning #datascience #django #SQLAlchemy #SQLite #SQL

https://t.iss.one/DataScience4
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘8
❔ Interview Question

What is the potential pitfall of using a mutable object (like a list or dictionary) as a default argument in a Python function?

Answer: A common pitfall is that the default argument is evaluated only once, when the function is defined, not each time it is called. If that default object is mutable, any modifications made to it in one call will persist and be visible in subsequent calls.

This can lead to unexpected and buggy behavior.

Incorrect Example (The Pitfall):

def add_to_list(item, my_list=[]):
my_list.append(item)
return my_list

# First call seems to work fine
print(add_to_list(1)) # Output: [1]

# Second call has unexpected behavior
print(add_to_list(2)) # Output: [1, 2] -- The list from the first call was reused!

# Third call continues the trend
print(add_to_list(3)) # Output: [1, 2, 3]


The Correct, Idiomatic Solution:

The standard practice is to use None as the default and create a new mutable object inside the function if one isn't provided.

def add_to_list_safe(item, my_list=None):
if my_list is None:
my_list = [] # Create a new list for each call
my_list.append(item)
return my_list

# Each call now works independently
print(add_to_list_safe(1)) # Output: [1]
print(add_to_list_safe(2)) # Output: [2]
print(add_to_list_safe(3)) # Output: [3]


tags: #Python #Interview #CodingInterview #PythonTips #Developer #SoftwareEngineering #TechInterview

━━━━━━━━━━━━━━━
By: @DataScience4 ✨
❀4
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.iss.one/pythonRe 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
❀2