🚀 Python Series – Day 15: Exception Handling (Handle Errors Like a Pro!) Yesterday, we learned how to work with files in Python 📂 Today, let’s learn how to handle errors smartly without crashing your program ⚠️ 🧠 What is Exception Handling? Exception handling is a way to manage runtime errors so your program continues running smoothly. 👉 Without it → program crashes ❌ 👉 With it → program handles error gracefully ✅ 💻 Understanding try and except try: # risky code (may cause error) except: # runs if error occurs 🔍 How it Works: ✔️ Python first executes code inside try ✔️ If NO error → except is skipped ✔️ If error occurs → Python jumps to except ⚡ Example 1 (Basic) try: num = int(input("Enter number: ")) print(10 / num) except: print("Something went wrong!") 👉 If user enters 0 or text, error is handled. 🔥 Why Avoid Only except? Using only except is not a good practice ❌ 👉 It hides the real error. ✅ Best Practice: Handle Specific Errors try: num = int(input("Enter number: ")) print(10 / num) except ZeroDivisionError: print("Cannot divide by zero!") except ValueError: print("Please enter a valid number!") ⚡ Multiple Exceptions in One Line except (ZeroDivisionError, ValueError): print("Error occurred!") 🧩 else Block (Less Known 🔥) try: num = int(input("Enter number: ")) except ValueError: print("Invalid input") else: print("No error, result:", num) 👉 else runs only if no error occurs 🔒 finally Block (Very Important) try: print("Trying...") except: print("Error") finally: print("This always runs ✅") 👉 Used for cleanup (closing files, database, etc.) 🎯 Why This is Important? ✔️ Prevents crashes ✔️ Makes programs professional ✔️ Used in real-world apps, APIs, ML projects ⚠️ Pro Tips: 👉 Always use specific exceptions 👉 Use finally for cleanup 👉 Don’t hide errors blindly 📌 Tomorrow: Modules & Packages (Organize Your Code Like a Pro) Follow me to master Python step-by-step 🚀 #Python #Coding #Programming #DataScience #LearnPython #100DaysOfCode #Tech #MustaqeemSiddiqui
Python Exception Handling Best Practices
More Relevant Posts
-
#Understanding Python Destructors: A Practical Mini-Project # Python’s __init__ method gets all the spotlight, but what happens when an object’s job is done? That’s where the Destructor (__del__) comes in. I recently explored how to use destructors to manage external resources efficiently. Here is a mini-project demonstrating a Smart File Session Manager. 🛠️ The Project: Automated Resource Cleanup In real-world apps, forgetting to close a file or a database connection can lead to memory leaks. This script ensures that the resource is safely closed the moment the object is destroyed. 📝 Step-by-Step Implementation: Step 1: Define the Class and Constructor We initialize the session and automatically create a log file. Python class SessionManager: def __init__(self, name): self.name = name self.file = open(f"{self.name}.txt", "w") print(f"✅ Session '{self.name}' started and file created.") Step 2: Add Functionality A simple method to write logs to our file. Python def write_log(self, message): self.file.write(message + "\n") print(f"✍️ Logged: {message}") Step 3: Implement the Destructor (__del__) This is the magic part. It triggers automatically when the object is deleted or the program ends. Python def __del__(self): self.file.write("Session Closed.\n") self.file.close() print(f"🗑️ Destructor Called: Resources for '{self.name}' cleaned up.") Step 4: Execute and Observe Python # Creating the object session = SessionManager("User_Activity_Log") session.write_log("User logged in at 10:00 AM") # Manually deleting the object to trigger the destructor del session 💡 Key Takeaways: Automatic Cleanup: The __del__ method ensures that even if you forget to close a file, Python handles it during garbage collection. Resource Management: Great for handling database connections, network sockets, or temporary files. Caution: While powerful, destructors should be used carefully due to how Python's Garbage Collector handles circular references. Building these small utility projects helps in understanding the "under the hood" mechanics of Python. How do you handle resource cleanup in your projects? Do you prefer Destructors or Context Managers (with statements)? Let’s discuss in the comments! 👇 #Python #Programming #SoftwareDevelopment #CleanCode #CodingTips #PythonBeginner #BackendDevelopment
To view or add a comment, sign in
-
COCOTB 2.0 → Python Co-simulator that becomes more Pythonic compared to 1.0 cocotb 2.0, released in Sep 2025, removes most deprecated features to make the API cleaner and consistent with Python 3+. Python has the yield keyword that return values on demand. cocotb 1.0 exploited this behavior to pause coroutine execution and resume it whenever an event occurred in the hdl simulator. However, this approach did not align well with native Python IDEs and tooling. cocotb 2.0 removed generators completely and switched to native async/await, which naturally supports the pause and resume capabilities required for RTL verification where we wait for simulator events and then perform actions. second major change is replacing fork with start_soon. With fork, if the scheduler is currently executing a coroutine and fork is called, the new coroutine may start executing immediately without waiting for the current coroutine to finish. This could lead to inconsistent trigger ordering issues. start_soon instead queues the coroutine and allows the current coroutine to complete before the new coroutine begins execution. cocotb 2.0 also allows awaiting tasks directly. A coroutine can be awaited to wait for its completion, and tasks can be cancelled using cancel(), which raises a CancelledError exception inside the coroutine which allows coroutine to perform proper cleanup. BinaryValue was the default data type used when accessing signals of the DUT. BinaryValue stored values as binary strings, which meant the HDL bit order and Python indexing were effectively reversed hence we need to convert value to a string and reverse it before using. Accessing individual bits also required converting to a string, reversing and then indexing. This process was error-prone. cocotb 2.0 removed BinaryValue and introduced Logic and LogicArray types. These provide consistent indexing with HDL and allow direct access to individual bits without string conversion. BinaryValue supported only binary strings and therefore did not fully support all 9 logic levels used in HDL. Values other than 0 and 1 are silently converted to 0, which sometimes caused mismatches between DUT and testbench values. Logic and LogicArray support all 9 logic levels. The Clock class now supports period_high, allowing variable duty cycles. In cocotb 1.0, TestFactory was used to generate multiple tests and failures were reported by raising special cocotb exceptions. cocotb 2.0 introduces decorators similar to pytest and uses normal Python assertions for test failures, aligning test writing with standard Python testing practices. IPC mechanisms has also been simplified, and Event objects no longer require name or data attributes. With these changes, cocotb 2.0 becomes more powerful and easier to use compared to cocotb 1.0. We are happy to launch COCOTB 2.0 foundation course to help you get familiar with the newer cocotb 2.0 and learn how to write cleaner, more Pythonic tb. Explore here : https://lnkd.in/dFvsAM_n
To view or add a comment, sign in
-
-
Python for Absolute Beginners: Your First 1,000 Lines — updated for Python 3.14 (April 2026). This tutorial teaches Python from scratch with security built into the foundation. The capstone mini project is a working password strength checker, not a "Hello, World" throwaway — so the same hour that introduces variables, conditionals, loops, functions, lists, and dictionaries also introduces the habit of thinking about security while writing code. What the tutorial covers: - Variables, data types, operators, and f-strings - Conditionals, for/while loops, and functions - Lists and dictionaries with real use cases - A complete password-strength checker mini project that pulls every concept together - The 10 errors every beginner hits (SyntaxError, IndentationError, NameError, TypeError, and friends) with worked fixes - An interactive code-builder and spot-the-bug challenge - A 1,000 Lines Roadmap of four follow-on projects: habit tracker, number-guessing game, expense splitter, flashcard quiz generator Reading code is not the same as writing it. The tutorial is structured so that anyone who types every example, completes every exercise, and finishes the four roadmap projects will have written over 1,000 lines of real, working Python. Pass the 12-question final exam at 80% or higher to earn a downloadable certificate of completion. https://lnkd.in/gk5udmim #Python #LearnToCode #Programming #PythonProgramming #Cybersecurity
To view or add a comment, sign in
-
✅ *Top Python Basics Interview Q&A - Part 3* 🌟 *1️⃣ What are classes and objects in Python?* Classes are blueprints for creating objects. Objects are instances of classes with attributes and methods. ``` class Dog: def __init__(self, name): self.name = name def bark(self): return f"{self.name} says Woof!" my_dog = Dog("Buddy") print(my_dog.bark()) # Output: Buddy says Woof! ``` *2️⃣ What is inheritance in Python?* Inheritance allows a class (child) to inherit properties from another class (parent). ``` class Animal: def speak(self): return "Sound" class Cat(Animal): def speak(self): return "Meow" ``` *3️⃣ What are self and `__init__`?* self refers to the current instance. `__init__` is the constructor method called when creating objects. *4️⃣ Explain access modifiers (public, private, protected).* Python uses conventions: obj.attr (public), _obj_attr (protected), __obj_attr (private/name mangling). *5️⃣ What are Python packages?* Directories containing modules with an `__init__.py` file. Example: numpy, pandas. *6️⃣ How do you read/write files in Python?* Use open() with modes "r", "w", "a". Always use with statement for auto-closing. ``` with open("file.txt", "w") as f: f.write("Hello World") ``` *7️⃣ What is the difference between append() and extend()?* append() adds a single item. extend() adds multiple items from an iterable. *8️⃣ Explain *args and **kwargs.* *args passes variable positional arguments. **kwargs passes variable keyword arguments. ``` def func(*args, **kwargs): print(args, kwargs) func(1, 2, name="Abinash") # (1, 2) {"name": "Abinash"} ``` *9️⃣ What is a decorator?* A function that modifies another function's behavior. Uses @decorator syntax. *🔟 What is list slicing?* Extract portions of lists: list[start:stop:step]. ``` nums = [0,1,2,3,4] print(nums[1:4]) # [1, 2, 3] ```
To view or add a comment, sign in
-
✅ *Top Python Basics Interview Q&A - Part 3* 🌟 *1️⃣ What are classes and objects in Python?* Classes are blueprints for creating objects. Objects are instances of classes with attributes and methods. ``` class Dog: def __init__(self, name): self.name = name def bark(self): return f"{self.name} says Woof!" my_dog = Dog("Buddy") print(my_dog.bark()) # Output: Buddy says Woof! ``` *2️⃣ What is inheritance in Python?* Inheritance allows a class (child) to inherit properties from another class (parent). ``` class Animal: def speak(self): return "Sound" class Cat(Animal): def speak(self): return "Meow" ``` *3️⃣ What are self and `__init__`?* self refers to the current instance. `__init__` is the constructor method called when creating objects. *4️⃣ Explain access modifiers (public, private, protected).* Python uses conventions: obj.attr (public), _obj_attr (protected), __obj_attr (private/name mangling). *5️⃣ What are Python packages?* Directories containing modules with an `__init__.py` file. Example: numpy, pandas. *6️⃣ How do you read/write files in Python?* Use open() with modes "r", "w", "a". Always use with statement for auto-closing. ``` with open("file.txt", "w") as f: f.write("Hello World") ``` *7️⃣ What is the difference between append() and extend()?* append() adds a single item. extend() adds multiple items from an iterable. *8️⃣ Explain *args and **kwargs.* *args passes variable positional arguments. **kwargs passes variable keyword arguments. ``` def func(*args, **kwargs): print(args, kwargs) func(1, 2, name="Abinash") # (1, 2) {"name": "Abinash"} ``` *9️⃣ What is a decorator?* A function that modifies another function's behavior. Uses @decorator syntax. *🔟 What is list slicing?* Extract portions of lists: list[start:stop:step]. ``` nums = [0,1,2,3,4] print(nums[1:4]) # [1, 2, 3] ``` 💬 *Double Tap ❤️ for Part 4!*
To view or add a comment, sign in
-
🔥 How Python Really Loads Modules (Deep Internals) Every time you write `import math` Python doesn't blindly re-import it. It follows a smart 4-step pipeline under the hood. Here's exactly what happens 👇 ━━━━━━━━━━━━━━━━━━━━ 𝗦𝘁𝗲𝗽 𝟭 — Check the cache first ━━━━━━━━━━━━━━━━━━━━ Python checks sys.modules before doing anything else. If the module is already there → it reuses it. No reload, no wasted work. That's why importing the same module 10 times in your code doesn't slow anything down. ━━━━━━━━━━━━━━━━━━━━ 𝗦𝘁𝗲𝗽 𝟮 — Find the module ━━━━━━━━━━━━━━━━━━━━ If not cached, Python searches in order: → Current directory → Built-in modules → Installed packages (site-packages) → All paths in sys.path This is why path order matters when you have naming conflicts. ━━━━━━━━━━━━━━━━━━━━ 𝗦𝘁𝗲𝗽 𝟯 — Compile to bytecode ━━━━━━━━━━━━━━━━━━━━ Your .py file gets compiled into bytecode (.pyc) and stored inside __pycache__/ Next time? Python skips compilation if the source hasn't changed. Faster startup. ━━━━━━━━━━━━━━━━━━━━ 𝗦𝘁𝗲𝗽 𝟰 — Execute and register ━━━━━━━━━━━━━━━━━━━━ Python runs the module code, creates a module object, and adds it to sys.modules["module_name"] Now it's cached for every future import in the same session. ━━━━━━━━━━━━━━━━━━━━ Most devs just write `import x` and move on. But knowing this pipeline helps you: ✅ Debug mysterious import errors ✅ Understand why edits don't reflect without reloading ✅ Write faster, cleaner Python What Python internals have surprised you the most? Drop it below 👇 #Python #Programming #SoftwareEngineering #100DaysOfCode #PythonTips
To view or add a comment, sign in
-
-
Day 15/30 - for Loops in Python What is a for Loop? A for loop is used to iterate — to go through every item in a sequence one by one and execute a block of code for each item. Instead of writing the same code 10 times, you write it once and let the loop repeat it automatically. The loop stops when it has gone through every item. The Golden Rule: A for loop works on any iterable — any object Python can step through one item at a time. This includes lists, tuples, strings, dictionaries, sets, and ranges. Syntax Breakdown for item in iterable: item -> This is a temporary variable holding the current item on each loop , you name it anything in -> It's the keyword that connects the variable to the iterable , always required iterable → the collection being looped - list, tuple, string, range, dict, set 1. How It Works, Step by Step 2. Python looks at the iterable and picks the first item 3. It assigns that item to your loop variable 4. It runs the indented block of code using that item 5. It moves to the next item and repeats steps 2–3 6. When there are no more items, the loop ends automatically The range() Function The range() generates a sequence of numbers for looping. The stop value is always excluded: range(5) -> 0, 1, 2, 3, 4 range(2, 6) -> 2, 3, 4, 5 range(0, 10, 2) -> 0, 2, 4, 6, 8 range(10, 0, -1) -> 10, 9, 8 ... 1 What You Can Loop Over List → loops through each item String → loops through each character one by one Tuple → same as list — goes item by item Dictionary → loops through keys by default; use .items() for key and value Range → loops through a sequence of generated numbers Set → loops through unique items (order not guaranteed) Tip: Use a name that makes the code readable — for fruit in fruits, for name in names, for i in range(10). i is the convention for index-style loops. Key Learnings ☑ A for loop iterates through every item in a sequence — running the same block for each one ☑ range(start, stop, step) generates numbers .Stop is always excluded ☑ You can loop over lists, strings, tuples, dicts, sets, and ranges ☑ The loop variable is temporary , holds the current item on each pass ☑ Indentation matters , only the indented block runs inside the loop Why It Matters: Loops are what turn Python from a calculator into an automation tool. Processing 10,000 sales records, sending emails to every customer, checking every row in a database - all of it uses loops. Writing code once and letting it repeat is one of the most powerful ideas in programming. My Takeaway Before loops, I was writing the same thing over and over. Now I write it once and Python handles the rest. That's what automation actually means - not robots, just smart repetition. #30DaysOfPython #Python #LearnToCode #CodingJourney #WomenInTech
To view or add a comment, sign in
-
-
🐍 Coming from Python. Last week I confidently wrote this in Rust: for i in range(1..100) { // 💥 sum += i; } Error: cannot find function 'range' in this scope My brain: “But Rust it’s just Python with semicolons?” That tiny mistake became one of the best lessons I’ve had in systems programming. 🔍 Corrected Rust vs Python Rust fn main() { let number: u32 = 92; if number % 2 == 0 { println!("{} is even", number); } else { println!("{} is odd", number); } let size = match number { 1..=20 => "small", 21..=50 => "medium", 51..=100 => "large", _ => "out of range", }; let mut sum = 0; for i in 1..=100 { sum += i; } println!("Sum = {}", sum); } Python number = 92 if number % 2 == 0: print(f"{number} is even") else: print(f"{number} is odd") if 1 <= number <= 20: size = "small" elif 21 <= number <= 50: size = "medium" elif 51 <= number <= 100: size = "large" else: size = "out of range" total = sum(range(1, 101)) print(f"Sum = {total}") Both do the same job. But the how is completely different. 🧠 Under the Hood – What Rust Forces You to Respect 1. No hidden pointers Python’s number = 92 is a full PyObject on the heap (refcount + type pointer + value). Rust’s u32 lives on the stack one CPU register. Modulo is a single instruction. 2. Zero-cost abstractions Rust’s 1..=20 in match compiles to two integer comparisons (disappears after optimization). No method calls, no temporary objects. 3. The loop reality Rust’s 1..=100 iterator lives entirely on the stack. 100 stack increments. Python’s range(1, 101)creates 100 Python integer objects behind the scenes (heap + refcounting + GC pressure). 4. Match is lightning fast Rust turns match into a jump table or optimized branches. Python’s version (even structural pattern matching) still has runtime overhead. ⚡ The Discipline Rust Teaches Python lets you be productive. Rust forces you to be precise. No more `range()` → Use the `..` syntax directly. Forgetting `mut`? Compiler stops you. Semicolon on last expression? You just returned `()`. This explicitness about memory and ownership is exactly why Rust code is so reliable and fast. Pro tips for Python devs: Treat the compiler like a strict but honest mentor. Understand stack vs heap early — it makes ownership click. Run `cargo clippy` religiously. 💬 Final Thought Rust won’t let you forget that every variable occupies real memory, every loop touches real silicon, and every decision has consequences. Python is a fantastic friend. Rust is a disciplined mentor that makes you a better programmer. Your Python experience is an advantage once you unlearn a few habits. Like ❤️ if you’ve ever tried to use Python syntax in Rust Repost 🔁 to help other Pythonistas Comment💬: What Python habit was hardest for you to break in Rust? #RustLang #Python #RustForPythonDevs
To view or add a comment, sign in
-
-
Day 16 / 30 - while Loops in Python What is a while Loop? A while loop keeps running its block of code as long as a condition is True. Unlike a for loop which runs a fixed number of times, a while loop runs an unknown number of times, it stops only when the condition becomes False. Perfect for situations where you don't know in advance how many repetitions you'll need. Syntax Breakdown while condition: # runs as long as condition is True # must update something to eventually make condition False while --> checks the condition before every single run condition --> any expression that evaluates to True or False How It Works, step by step Python checks the condition at the top of the loop If True --> it runs the indented block of code Goes back to the top and checks the condition again Keeps repeating until the condition becomes False When False --> exits the loop and continues the program for Loop vs while Loop for loop 1. Use when you know how many times to repeat 2. Looping over a list, range, sequence while loop 1. Use when you don't know how many times 2. Keep going until a condition changes The Infinite Loop -Most Common Mistake If your condition never becomes False, the loop runs forever, freezing your program. Always make sure something inside your loop changes the condition like incrementing a counter or taking user input so the loop can eventually stop. break and continue break - stops the loop immediately, exits even if the condition is still True continue → skips the current iteration and jumps back to the condition check Both break and continue work in for and while loops. Code Example # Count from 1 to 5 count = 1 while count <= 5: print("Count: " + str(count)) count = count + 1 # break — stop early number = 0 while number < 10: if number == 5: break # stops loop at 5 print(number) number += 1 Key Learnings ☑ A while loop runs as long as its condition is True , checks before every iteration ☑ Always update something inside the loop, counter, input, or flag or you'll get an infinite loop ☑ break exits the loop immediately when a condition is met ☑ continue skips the current iteration and jumps back to the condition check ☑ Use for when you know the count — use while when you don't Why It Matters While loops power real systems — PIN verification, login retry limits, game loops, servers waiting for requests. Anywhere your program needs to wait or keep trying until something changes, a while loop is the answer. My Takeaway A for loop is like a to-do list — you know how many items there are. A while loop is like waiting for a bus — you keep waiting until it arrives. Different tools, different situations. #30DaysOfPython #Python #LearnToCode #CodingJourney #WomenInTech
To view or add a comment, sign in
-
-
✉️ Comments & Type Conversion in Python #Day28 If you're starting your Python journey, two concepts you must understand are Comments and Type Conversion. These may seem basic, but they play a huge role in writing clean, efficient, and bug-free code. 💬 1. Comments in Python Comments are notes in your code that Python ignores during execution. They help developers understand the logic behind the code. 🔹 Types of Comments: 👉 Single-line Comments Start with # Used for short explanations Example: # This is a single-line comment print("Hello World") 👉 Multi-line Comments (Docstrings) Written using triple quotes ''' or """ Often used for documentation Example: """ This is a multi-line comment Used to explain complex logic """ print("Python is awesome") 🌟 Why Comments Matter: ✔ Improve code readability ✔ Help in debugging ✔ Make teamwork easier 🤝 ✔ Useful for documentation 💡 Pro Tip: Avoid over-commenting. Write comments that add value, not noise. 🔄 2. Type Conversion in Python Type conversion means changing one data type into another. Python supports both implicit and explicit conversion. 🔹 Implicit Type Conversion (Automatic) Python automatically converts data types when needed. Example: x = 5 # int y = 2.5 # float result = x + y print(result) # Output: 7.5 👉 Here, Python converts int to float automatically. 🔹 Explicit Type Conversion (Type Casting) You manually convert data types using built-in functions. Common Type Casting Functions: int() → Convert to integer 🔢 float() → Convert to float 📊 str() → Convert to string 🔤 list() → Convert to list 📋 tuple() → Convert to tuple 📦 set() → Convert to set 🔗 Example: x = "10" y = int(x) # Convert string to integer print(y + 5) # Output: 15 ⚠️ Important Notes: ❗ Invalid conversions cause errors int("abc") # ❌ Error ✔ Always ensure compatibility before converting 🎯 Real-Life Use Cases 📌 Taking user input (always string → convert to int/float) 📌 Data cleaning in analytics 📌 Formatting outputs 📌 Working with APIs & files 💡 Quick Comparison FeatureComments 💬Type Conversion 🔄PurposeExplain codeChange data typeExecuted?❌ No✅ YesSyntax#, ''' '''int(), str(), etc.Use CaseReadability & docsData handling 🏁 Final Thoughts Mastering comments makes your code human-friendly, while type conversion makes it machine-friendly. Together, they make you a better Python developer 💪 #Python #Programming #Coding #DataAnalysts #DataAnalytics #LearnPython #DataAnalysis #DataCleaning #dataCollection #DataVisualization #DataJobs #LearningJourney #PowerBI #MicrosoftPowerBI #Excel #MicrosoftExcel #PythonProgramming #CodeWithHarry #SQL #Consistency
To view or add a comment, sign in
Explore related topics
- Best Practices for Exception Handling
- Tips for Exception Handling in Software Development
- Strategies for Writing Error-Free Code
- Coding Best Practices to Reduce Developer Mistakes
- How to Use Python for Real-World Applications
- Python Learning Roadmap for Beginners
- Steps to Follow in the Python Developer Roadmap
- Essential Python Concepts to Learn
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development