Day 13 of my Python Full Stack journey. ✅ Today's topic: Scope — where your variables live and die. This one concept explains so many confusing bugs. Here's what I typed today: # Local scope — only lives inside the function def my_function(): message = "I only exist here" print(message) # works ✅ my_function() # print(message) # ❌ Error! message doesn't exist out here # Global scope — lives everywhere name = "Punith" def greet(): print(f"Hello {name}") # works ✅ greet() # Modifying a global variable inside a function count = 0 def increment(): global count count += 1 increment() print(count) # 1 ✅ Biggest lesson today: Avoid using 'global' too much. If every function is touching the same variable — that's a sign your code needs better structure. This is exactly why functions should take inputs and return outputs — not secretly modify things from outside. Small concept. But this is how senior developers think. #PythonFullStack #Day13 #BuildingInPublic #100DaysOfCode #Bangalore
Python Full Stack Day 13: Understanding Scope and Global Variables
More Relevant Posts
-
Day 5 of my Python Full Stack journey. ✅ Today's topic: Functions — write once, use anywhere. This is where Python starts feeling like real programming. Instead of copying the same code 10 times — you wrap it in a function and call it. Here's what I typed today: def greet(name, role="Developer"): return f"Hey {name}, future {role}!" msg = greet("Punith") print(msg) # Output: Hey Punith, future Developer! Biggest lesson today: Default arguments make functions flexible. You only pass them if you want to override the default. Small thing. But it made everything click. — Here's what I covered in 5 days: → Variables & Data Types → Conditionals → Loops → Functions → Built a Calculator from scratch — pushed to GitHub ✅ 45 minutes a day. No excuses. #PythonFullStack #Day5 #Week1Done #BuildingInPublic #100DaysOfCode #Bangalore
To view or add a comment, sign in
-
-
The "Shadow" Fix: Python Version Compatibility **Hook:** Building for the "Latest & Greatest" is easy. Building for the "Real World" is where the engineering gets messy. **Body:** While finalizing my Enterprise RAG pipeline, I hit a silent production-breaker: A `TypeError` buried deep in a third-party dependency. The culprit? The `llama-parse` library uses Python 3.10+ type union syntax (`|`), but the production environment was locked to Python 3.9. Result: Immediate crash on boot. Instead of demanding a system-wide upgrade—which isn’t always possible in locked-down enterprise environments—I implemented a **Graceful Fallback Logic**: ✅ **Dynamic Imports**: Wrapped the cloud-parser initialization in a guarded `try-except` block. ✅ **Smart Routing**: If the Python environment is incompatible, the system automatically redirects to a local, high-fidelity `PyMuPDF` parser. ✅ **System Resilience**: The app stays online, the UI remains responsive, and 99% of RAG functionality remains available without a single user noticing a failure. Real Engineering isn't just about using the best tools—it’s about writing code that doesn't break when the environment isn't perfect. #Python #SoftwareEngineering #RAG #AIEngineering #SystemDesign #Resilience
To view or add a comment, sign in
-
Mutable default arguments — the bug that's been in your code for years Most Python developers have shipped this bug. They just don't know it yet. def add_item(item, items=[]): items.append(item) return items Looks innocent. Isn't. Most people think the empty list is created fresh on every call. It's not. The default value is evaluated exactly once — when the function is defined. The same list object is reused on every call where you don't pass items explicitly. Call it three times without arguments and you don't get three lists with one item each. You get one list with three items, growing across every call you forget to make. In production this shows up as: a function that caches results between requests when you didn't ask it to. State leaking across users. Tests that pass alone and fail in a suite. The fix is one line: def add_item(item, items=None): if items is None: items = [] items.append(item) Mutable defaults are not a feature. They're a sharp edge. Sentinel-and-rebuild is the only safe pattern. #PythonInternals #Python #DataEngineering #SoftwareEngineering #Developer #PythonDeveloper #Backend #CodingInterview #Developers #Programming #Learning #PythonTips
To view or add a comment, sign in
-
Every framework you have ever used is just design patterns written in production code. Day 06 of 30 -- Design Patterns in Python Advanced Python + Real Projects Series Django post_save is the Observer pattern. DRF renderer_classes is the Strategy pattern. logging.getLogger() is the Singleton pattern. @app.route is the Decorator pattern. Most developers use all of these every day without knowing the names. Today's Topic covers: Why patterns exist and the 3-category decision framework 6 patterns every Python backend developer must know Singleton with double-checked locking for thread safety Factory with self-registering decorator pattern Observer event bus with decorator-based subscriptions Strategy using typing.Protocol for structural subtyping Real scenario -- Factory + Strategy + Observer in one order pipeline 6 mistakes including pattern hunting and Observer without error isolation 5 best practices including why Python functions are strategies Key insight: Design patterns are not solutions you add to code. They are names for solutions already in your code. Phase 1 complete -- 6 days of Python internals done. #Python #DesignPatterns #SoftwareEngineering #BackendDevelopment #Django #FastAPI #100DaysOfCode #PythonDeveloper #TechContent #BuildInPublic #TechIndia #CleanCode #PythonProgramming #LinkedInCreator #LearnPython #PythonTutorial
To view or add a comment, sign in
-
My biggest mistake early in my Python journey wasn’t bad code. It was ignoring the small tools that make systems reliable. After 4+ years building automation projects, I found a handful of libraries that quietly transformed my side projects into production-ready products. I wrote about the exact 8 libraries I rely on today. Check out the full breakdown on my Medium account.
To view or add a comment, sign in
-
Day 5 of learning backend from first principles. Today was about strengthening both application-level and system-level understanding. With Django: • Worked with templates — connecting backend data to what users actually see • Explored error handling — understanding how things break and how to debug them Also started revisiting fundamentals of Operating Systems. Why this matters: Backend isn’t just writing APIs. It sits on top of how the system actually works. Understanding: • How processes run • How memory is managed • How errors propagate …makes you a better developer than just knowing frameworks. Still early, but the goal is clear: Build depth from both sides — systems + applications. #BackendDevelopment #Django #OperatingSystems #ComputerScience #WebDevelopment #LearnInPublic #Python #SoftwareEngineering
To view or add a comment, sign in
-
I built my first real Python project today. 🐍 A fully functional Contact Book — runs in the terminal, no frameworks, no tutorials to copy from. What it does: → ➕ Add multiple contacts at once → 📋 View all saved contacts → ❌ Delete contacts by number → 🔁 Keeps running until you choose to exit What I used to build it: → Dictionary — to store name + phone pairs → While loop — to keep the app running → Functions — to avoid repeating code → Enumerate — to number contacts cleanly 3 weeks ago I didn't know what a dictionary was. Today I built an app with one. That's what consistent learning looks like. 💪 #Python #LearningInPublic #DataAnalytics #PythonProject #BBA #buildinpublic
To view or add a comment, sign in
-
🚀 Turn any Python CLI script into a modern GUI – with zero extra dependencies. I just open‑sourced PyScript-to-GUI, a tool that instantly wraps your command‑line scripts into a clean, functional graphical interface. ⚡ No more boring terminals. Your users get a real window with dark mode, real‑time output, and interactive input dialogs – without writing a single line of GUI code. ✨ Key features: ✅ Zero external dependencies – uses only tkinter (built into Python) ✅ Smart input() handling – automatically converts prompts into pop‑up dialogs ✅ Live logging – all print() output appears in a scrollable terminal‑style area ✅ Multi‑threaded – the GUI never freezes, even during heavy tasks ✅ Hacker aesthetic – dark grey + lime green theme, ready to impress 🔧 Perfect for: Sharing your scripts with non‑technical colleagues Building quick internal tools with a professional look Teaching Python without scaring beginners with the terminal 🔗 GitHub repo: https://lnkd.in/dDpXCYSk 👨💻 Built by NULL200OK – because every script deserves a beautiful face. #Python #GUI #Tkinter #OpenSource #DeveloperTools #CLItoGUI #PyScriptToGUI #Coding
To view or add a comment, sign in
-
Day 57 of #100DaysOfCode 🚀 Today I built a blog application using Flask 🧩 I focused on understanding how to structure a web app using Flask, including routing, templates, and handling user input. It was interesting to see how quickly you can turn a simple idea into a working blog with Python. 🔹 What I worked on: Setting up a Flask project Creating routes for home, post, and add blog pages Using Jinja2 templates for dynamic content Handling form submissions Basic styling for better UI 💡 Key learning: Flask makes backend development feel simple and flexible. Once the basics are clear, building real-world projects becomes much easier. Still a lot to improve — like adding authentication, database integration, and deployment — but this feels like a solid step forward. On to Day 58 💪 #Flask #Python #WebDevelopment #CodingJourney #LearnByDoing
To view or add a comment, sign in
-
🚀 Level Up Your Python Code with collections.Counter 🐍 Still using manual loops and dictionaries to count items? There’s a smarter, cleaner way—meet Counter, a powerful subclass of Python’s built-in dict designed specifically for counting. Here’s why it deserves a spot in your toolkit 👇 🔹 Effortless Counting Just pass any iterable (list, string, tuple, etc.), and it automatically calculates frequencies. Keys are elements, values are their counts—simple and efficient. 🔹 No More KeyError Access a missing element? No crash. Counter returns 0 by default. 🔹 Supports Negative & Zero Counts Unlike regular counting logic, Counter handles zero and even negative values seamlessly. 🔹 Built-in Power Methods most_common(n) → Get top n frequent elements instantly update() & subtract() → Add or remove counts easily elements() → Expand back into elements based on counts 🔹 Multiset Operations Made Easy Perform arithmetic operations directly: + → Combine counts - → Subtract counts & → Intersection (minimum counts) | → Union (maximum counts) 💡 Why it matters? Cleaner code, fewer bugs, and faster development. No need to reinvent counting logic—Counter handles it elegantly. #Python #PythonCounter #PythonCollections #DataStructures #DataScience #PythonProgramming #DeveloperCommunity #CodingTips #LearnPython
To view or add a comment, sign in
-
Explore related topics
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