Learn Python Coding
39.1K subscribers
639 photos
31 videos
24 files
398 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
How to check for the presence of subclasses in Python? 🐍🧐

Here's how you can do it:

import inspect

def has_subclasses(cls):
return any(issubclass(sub, cls) for sub in inspect.getmembers(sys.modules[cls.__module__], inspect.isclass))

This function uses the inspect module to find all subclasses of the given class. πŸ› οΈ

#Python #Programming #Subclasses #Coding #Dev #Tech
❀5πŸ‘1
πŸ“‚ Reminder about Python map()!

map() β€” a built-in function that applies the specified function to each element of an iterable object (list, tuple, set, etc.).

The picture shows the basic syntax, an example of use with lambda, and a typical case β€” data transformation without a manual for loop.

Save it to quickly remember the syntax!

πŸπŸ’»πŸ—ΊοΈ #Python #Coding #Programming #LearnToCode #DevTips #Tech
❀7πŸ‘1
If you're working with data pipelines, these repositories are very useful: πŸš€πŸ“Š

ibis: A Python API that allows you to write queries once and run them on different data backends, such as DuckDB, BigQuery, and Snowflake. πŸπŸ”—
https://github.com/ibis-project/ibis

pygwalker: Instantly turns a DataFrame into an interactive UI for visual data exploration. πŸ“ˆπŸ–₯️
https://github.com/Kanaries/pygwalker

katana: A fast and scalable web crawler, often used for security testing and large-scale data collection/search. πŸ•·οΈπŸ”’
https://github.com/projectdiscovery/katana

#dataengineering #python #opensource #devtools #dataviz #security
❀3
Why is enumerate() used in Python? πŸ€”πŸ

It allows you to simultaneously obtain the value of an element and its index when iterating through a list. πŸ“Šβœ¨

This is more convenient and more readable than manually working with a counter. βœ…πŸš€

for i, item in enumerate(items):
print(i, item)


#Python #Coding #Programming #Dev #Tech #Code

✨ Join Best TG Channels
https://t.me/addlist/0f6vfFbEMdAwODBk

⭐️ Join Our WhatsApp Channel
https://whatsapp.com/channel/0029VaC7Weq29753hpcggW2A
❀4πŸ‘1πŸ‘1
Data validation with Pydantic! 🐍✨

In the early stages of development, data validation usually doesn't cause problems. In many Python projects, validation initially looks simple:

if not isinstance(age, int):
raise ValueError("age must be an int")

But then come email, JSON from APIs, query parameters, nested objects, configs, nullable fields, and type conversion. At some point, the code turns into a set of if/else and manual checks.

For such tasks, Pydantic is often used. Installation:

pip install pydantic
pip install "pydantic[email]"

Create a model:

from pydantic import BaseModel

class User(BaseModel):
name: str
age: int

Now the data is validated automatically:

user = User(
name="Alex",
age="30"
)

print(user.age)
print(type(user.age))

The result:
30
<class 'int'>

Pydantic will automatically convert the string "30" to an int. If you pass an incorrect value, you'll get a ValidationError:

User(
name="Alex",
age="test"
)

This is especially convenient when working with APIs, JSON, query parameters, and incoming data from outside.

A common production case is checking email:

from pydantic import BaseModel, EmailStr

class User(BaseModel):
email: EmailStr

User(email="alex@test.com")

If the email is invalid, Pydantic will throw a ValidationError. You can set default values:

from pydantic import BaseModel

class Config(BaseModel):
host: str = "localhost"
port: int = 5432

And allow None:

from pydantic import BaseModel

class User(BaseModel):
nickname: str | None = None

This field becomes optional. A practical example is processing an API response:

from pydantic import BaseModel

class Product(BaseModel):
id: int
title: str
price: float

data = {
"id": "1",
"title": "Keyboard",
"price": "99.5"
}

product = Product(**data)

print(product)

The types will be automatically converted. For nested model structures, you can combine:

from pydantic import BaseModel

class Address(BaseModel):
city: str
zip_code: str

class User(BaseModel):
name: str
address: Address

user = User(
name="Alex",
address={
"city": "Berlin",
"zip_code": "10115"
}
)

print(user)

The nested object will also be validated. Serialization in Pydantic v2:

print(user.model_dump())
print(user.model_dump_json())

Pydantic is actively used in FastAPI, ETL, microservices, data pipelines, and API clients.

For working with environment variables in Pydantic v2, a separate package is usually used:

pip install pydantic-settings

It's important to understand: Pydantic is not an ORM and does not replace business logic. Its task is to validate data, convert types, and describe schemas.

πŸ”₯ Pydantic significantly reduces the amount of manual data validation and makes processing incoming structures more predictable.

#Python #Pydantic #DataValidation #FastAPI #Coding #DevOps

✨ Join Best TG Channels https://t.me/addlist/0f6vfFbEMdAwODBk
⭐️ Join Our WhatsApp Channel https://whatsapp.com/channel/0029VaC7Weq29753hpcggW2A
❀3πŸ‘1
# Cheat sheet on high-order functions in Python:

🐍 map() - applies a function to every element of an iterable and returns an iterator with the results
πŸ” filter() - filters elements based on a condition and leaves only those for which the function returns True
πŸ”„ reduce() - successively combines all elements of an iterable into a single value
⚑ lambda functions - anonymous functions for short expressions and working with map/filter/reduce
πŸ“¦ iterable objects - lists, tuples, and other collections for processing
πŸ“š functools - a Python module that contains reduce()
🧠 functional programming - an approach to programming through functions and data processing without changing the state

```python
# Example usage
from functools import reduce

# map
squared = map(lambda x: x**2, [1, 2, 3, 4])
print(list(squared))

# filter
evens = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])
print(list(evens))

# reduce
total = reduce(lambda x, y: x + y, [1, 2, 3, 4])
pr
int(total)```

#Python #Programming #HighOrderFunctions #FunctionalProgramming #Coding #MapFilterReduce

✨ Join Best TG Channels https://t.me/addlist/0f6vfFbEMdAwODBk
⭐️ Join Our WhatsApp Channel https://whatsapp.com/channel/0029VaC7Weq29753hpcggW2A
❀3πŸ”₯2πŸ‘1
This media is not supported in your browser
VIEW IN TELEGRAM
❀️ Architecture Patterns β€” an informative repository on backend architecture in Python!

Here, they excellently demonstrate how to properly separate application logic, work with complex architecture, build a scalable backend, and maintain a codebase in an adequate state as the project grows. Instead of dry theory, the authors gradually build a full-fledged application and show how the architecture evolves as the project grows.

I'll leave a link: https://github.com/cosmicpython/book

#Python #Backend #Architecture #Coding #DevCommunity #OpenSource

✨ Join Best TG Channels https://t.me/addlist/0f6vfFbEMdAwODBk

⭐️ Join Our WhatsApp Channel https://whatsapp.com/channel/0029VaC7Weq29753hpcggW2A
❀2
Why in Python it is better to check None using is 🐍

In Python, you should not write obj == None, even if sometimes it works the same ⚠️

The reason is that == calls the comparison method eq, which can be overridden in the class β€” and then the behavior becomes unpredictable 🎲

For example:

class Weird:
def eq(self, other):
return True # always says "equal"

obj = Weird()

print(obj == None) # True
print(obj is None) # False

Here obj == None gives a false result due to custom logic πŸ€”

Instead:

obj is None

is checks the identity of the object and cannot be overridden. Since None is a singleton, such a check is always correct and predictable βœ…

Conclusion: to check for None always use is None β€” it is the right and safe approach πŸ›‘οΈ

✨ Join Best TG Channels https://t.me/addlist/0f6vfFbEMdAwODBk

⭐️ Join Our WhatsApp Channel https://whatsapp.com/channel/0029VaC7Weq29753hpcggW2A

#Python #Programming #Coding #SoftwareDevelopment #TechTips #DevCommunity
❀5