<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Py Internals</title>
  <subtitle>An open-source, interactive Python course that shows what your code does in memory.</subtitle>
  <link href="https://inboxpraveen.github.io/Py-Internals/" />
  <link rel="self" href="https://inboxpraveen.github.io/Py-Internals/feed.xml" />
  <id>https://inboxpraveen.github.io/Py-Internals/</id>
  <updated>2026-10-17T00:00:00Z</updated>
  <author><name>Praveen Kumar</name><uri>https://github.com/inboxpraveen</uri></author>
  <entry>
    <title>Session 09: Modules &amp; Imports</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/09-modules/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/09-modules/</id>
    <published>2026-10-17T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>What import really does: find a file, run it once, cache it in sys.modules and bind a name. Why from-imports go stale, what __name__ is, and how circular imports break.</summary>
    <category term="Program structure" />
  </entry>
  <entry>
    <title>Session 08: Exceptions, Tracebacks &amp; Context Managers</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/08-exceptions/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/08-exceptions/</id>
    <published>2026-09-17T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>What raise does to the call stack, how to read a traceback, why finally runs past a return, what with calls for you and how exceptions chain with from.</summary>
    <category term="Control flow" />
  </entry>
  <entry>
    <title>Session 07: The GIL &amp; Concurrency</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/07-gil/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/07-gil/</id>
    <published>2026-09-12T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>Why CPython has a global interpreter lock, why it doesn&#x27;t make your code thread-safe, and when threads, multiprocessing or asyncio actually help.</summary>
    <category term="Runtime" />
  </entry>
  <entry>
    <title>Session 06: Decorators</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/06-decorators/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/06-decorators/</id>
    <published>2026-09-03T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>A decorator is one line of assignment. See the wrapper, the closure cell that keeps your function alive, functools.wraps, decorator factories and stacking.</summary>
    <category term="Functions" />
  </entry>
  <entry>
    <title>Session 04: Classes &amp; Objects</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/04-classes/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/04-classes/</id>
    <published>2026-08-15T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>What self really is, where attributes live, how bound methods work, why class attributes are shared and how inheritance is just a longer lookup.</summary>
    <category term="Objects" />
  </entry>
  <entry>
    <title>Session 05: Iterators &amp; Generators</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/05-iterators/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/05-iterators/</id>
    <published>2026-08-15T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>How a for loop uses iter and next, what StopIteration does, how yield pauses a frame and what lazy evaluation costs in memory compared with a list.</summary>
    <category term="Control flow" />
  </entry>
  <entry>
    <title>Session 03: Lists, Dicts &amp; References</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/03-lists-dicts/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/03-lists-dicts/</id>
    <published>2026-05-07T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>Why b = a shares a list, what a shallow copy really copies, how deepcopy differs, and why passing a dict to a function can change the caller&#x27;s data.</summary>
    <category term="Foundations" />
  </entry>
  <entry>
    <title>Session 02: Functions, Scope &amp; the Call Stack</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/02-functions/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/02-functions/</id>
    <published>2026-05-05T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>Watch a call frame appear and disappear. Local scope, LEGB lookup, arguments passed by reference, closures with real cells and the mutable default trap.</summary>
    <category term="Foundations" />
  </entry>
  <entry>
    <title>Session 01: Variables &amp; Mutability</title>
    <link href="https://inboxpraveen.github.io/Py-Internals/sessions/01-variables/" />
    <id>https://inboxpraveen.github.io/Py-Internals/sessions/01-variables/</id>
    <published>2026-03-23T00:00:00Z</published>
    <updated>2026-10-17T00:00:00Z</updated>
    <summary>See what x = 42 really does in memory. Names, objects, id(), aliasing, mutation versus rebinding and reference counting, animated one step at a time.</summary>
    <category term="Foundations" />
  </entry>
</feed>
