Python Data Science Jobs & Interviews
18K subscribers
143 photos
3 videos
14 files
255 links
Your go-to hub for Python and Data Science—featuring questions, answers, quizzes, and interview tips to sharpen your skills and boost your career in the data-driven world.

Admin: @Hussein_Sheikho
Download Telegram
🐍 Python Tip of the Day: Decorators — Enhance Function Behavior

🧠 What is a Decorator in Python?
A decorator lets you wrap extra logic before or after a function runs, without modifying its original code.

🔥 A Simple Example

Imagine you have a basic greeting function:

def say_hello():
print("Hello!")


You want to log a message before and after it runs, but you don’t want to touch say_hello() itself. Here’s where a decorator comes in:

def my_decorator(func):
def wrapper():
print("Calling the function...")
func()
print("Function has been called.")
return wrapper


Now “decorate” your function:

@my_decorator
def say_hello():
print("Hello!")


When you call it:

say_hello()


Output:
Calling the function...
Hello!
Function has been called.




💡 Quick Tip:
The @my_decorator syntax is just syntactic sugar for:
s
ay_hello = my_decorator(say_hello)

🚀 Why Use Decorators?
- 🔄 Reuse common “before/after” logic
- 🔒 Keep your original functions clean
- 🔧 Easily add logging, authentication, timing, and more



#PythonTips #Decorators #AdvancedPython #CleanCode #CodingMagic

🔍By: https://t.me/DataScienceQ
👍5🔥2
🧠 What is a Generator in Python?
A generator is a special type of iterator that produces values lazily—one at a time, and only when needed—without storing them all in memory.

---

How do you create a generator?
Correct answer:
Option 1: Use the yield keyword inside a function.

🔥 Simple example:

def countdown(n):
while n > 0:
yield n
n -= 1


When you call this function:

gen = countdown(3)
print(next(gen)) # 3
print(next(gen)) # 2
print(next(gen)) # 1


Each time you call next(), the function resumes from where it left off, runs until it hits yield, returns a value, and pauses again.

---

Why are the other options incorrect?

- Option 2 (class with __iter__ and __next__):
It works, but it’s more complex. Using yield is simpler and more Pythonic.

- Options 3 & 4 (for or while loops):
Loops are not generators themselves. They just iterate over iterables.

---

💡 Pro Tip:
Generators are perfect when working with large or infinite datasets. They’re memory-efficient, fast, and clean to write.

---

📌 #Python #Generator #yield #AdvancedPython #PythonTips #Coding


🔍By: https://t.me/DataScienceQ
👍62🔥2❤‍🔥1
How to Dynamically Create a Class at Runtime in Python?

You can dynamically create a class in Python using the built-in type() function. This is one of the simplest ways to leverage metaclasses.

Example:

# Create a new class dynamically
MyDynamicClass = type('MyDynamicClass', (object,), {
'say_hello': lambda self: print("Hello!")
})

# Use the dynamically created class
obj = MyDynamicClass()
obj.say_hello()

Explanation:

* 'MyDynamicClass': Name of the new class
* (object,): Tuple of base classes (here, just inheriting from object)
* {'say_hello': ...}: Dictionary of attributes/methods for the class

Output:

Hello!

This is a powerful feature used in metaprogramming and framework design.



#PythonTips #Metaclass #PythonOOP #DynamicClass #typeFunction #AdvancedPython #CodingTips

🌺https://t.me/DataScienceQ
👍2🔥2