Python POP: The Complete Guide to Procedural Programming
From Variables to Functions — A Roadmap for Beginners & Intermediates
Python POP: The Complete Guide to Procedural Programming
From Variables to Functions — A Roadmap for Beginners & Intermediates
Procedural Oriented Programming (POP) is the “get stuff done” style of Python.
Before you build complex objects, data pipelines, or AI agents, you need to master one core skill: writing a procedure — a clear, step-by-step recipe the computer can follow.
What is POP in Python?
POP = programs organized as procedures (functions) that transform data through steps.
Think of POP as a pipeline:
- Get input (text, file, user, API, database)
- Transform (clean, filter, compute, aggregate)
- Output (print, save, report, return)
This is why POP dominates:
- scripting
- automation
- data analysis
- interview coding
- backend “glue code”
The POP Stack: Data, Flow, Functions
Part 1 — The Ingredients: Data Structures
In POP, your biggest early win is learning to choose the right container. The wrong structure causes messy logic, slow code, and bugs.
1) Strings + Indexing/Slicing
Strings are ordered sequences of characters.
- Index:
name[0]→ first character - Slice:
name[1:4]→ indices 1,2,3 (4 is excluded)
Key concept: Strings are immutable You cannot do this:
name[0] = "P"
Instead, you create a new string:
name = "P" + name[1:]
2) Lists [] vs Tuples ()
Both store sequences, but the big difference is mutability.
- List: mutable (changeable) Use it when items will be added/updated/removed.
cart = ["apple", "banana"] cart.append("orange")
- Tuple: immutable (safe/fixed) Use it for data that should not change (coordinates, settings, constants).
point = (37.77, -122.42)
Rule of thumb:
- “Will it change later?” → list
- “Should it stay locked?” → tuple
3) Dictionaries {k: v}: Fast Lookups
Lists use numeric indexes (0,1,2…). Dicts use keys.
user = {"id": 101, "name": "Sam"}
print(user["name"])
This is POP gold because most real-world programs are:
- “Given X, find Y”
- “Map keys to values”
- “Count, group, summarize”
4) Sets {}: Uniqueness + Fast Membership
A set is an unordered collection of unique values.
Intermediate trick:
nums = [1, 2, 2, 3]
unique = set(nums) # {1, 2, 3}
Use sets for:
- removing duplicates
- checking membership fast (
x in my_set) - comparing groups (
union,intersection)
Part 2 — The Recipe: Control Flow
Now we have data. Control flow determines how your program moves.
1) If / Elif / Else
This is decision logic. Python uses indentation to define blocks:
if score > 90:
print("A")
elif score > 80:
print("B")
else:
print("Study harder")
Tip: keep conditions readable. If it takes a paragraph to explain, refactor.
2) Loops: For vs While
For loop: iterate through a collection Example: list of emails, rows, log lines, IDs.
Tuple unpacking (super common in interviews):
pairs = [(1, "a"), (2, "b")]
for number, letter in pairs:
print(number, letter)
While loop: repeat until a condition changes Perfect for: retry logic, input validation, “keep running until done”.
while attempts < 3:
attempts += 1
Rule of thumb:
- “For each item…” →
for - “Keep going until…” →
while
3) List Comprehensions (Intermediate)
This is Python’s clean, POP-friendly shortcut.
Old way:
squares = []
for x in range(10):
squares.append(x**2)
Pythonic way:
squares = [x**2 for x in range(10)]
Use it when it stays readable. If it becomes a puzzle, go back to a normal loop.
Part 3 — The Tools: Functions & Methods
Functions turn POP from “one long script” into clean, reusable steps.
1) return vs print (the #1 beginner confusion)
print()shows text to humansreturngives a value back to code
def add(a, b):
return a + b
result = add(2, 3) # result is usable later
If you want to reuse the output later, return it.
2) *args and **kwargs (Intermediate flexibility)
*args = variable positional inputs (stored as a tuple)
def sum_all(*args):
return sum(args)
sum_all(10, 20, 30)
**kwargs = variable named inputs (stored as a dict)
def greet(**kwargs):
return f"Hi {kwargs.get('name', 'there')}!"
greet(name="Shirley")
3) Scope (LEGB)
Python resolves variable names using LEGB:
- Local (inside function)
- Enclosing (outer function in nesting)
- Global (top-level)
- Built-in (Python built-ins)
Practical tip: Avoid relying on globals. Pass values into functions and return results out. It makes debugging and testing easier.
4) Lambda (useful, but don’t worship it)
A lambda is a tiny one-time function.
square = lambda x: x**2
Often used with map() / filter(), but in modern Python, comprehensions are usually clearer.
Readable POP > clever POP.
A Real POP Mini-Project (File → Clean → Summarize → Print)
This ties all sections together (data + flow + functions + file I/O):
def load_lines(path):
with open(path, "r") as f:
return [line.strip() for line in f if line.strip()]
def count_levels(lines):
counts = {}
for line in lines:
level = line.split()[0] # INFO / ERROR
counts[level] = counts.get(level, 0) + 1
return counts
def main():
lines = load_lines("app.log")
counts = count_levels(lines)
print("=== Log Summary ===")
for level in sorted(counts):
print(f"{level}: {counts[level]}")
main()
This is POP in one sentence: small functions + clear steps + reusable outputs.
Summary: POP is Pipeline Thinking
Procedural Programming in Python is about building efficient pipelines:
- Store data in the right structure (list vs set vs dict)
- Process it with clean control flow (if/loops/comprehensions)
- Package it into reusable functions (return, args/kwargs, scope)
Once you can do that smoothly, you’ve officially moved from beginner to intermediate Python — and OOP becomes much easier later.
Extended Reading: Python OOP: The Practical Guide (Mindset → Classes → Inheritance → Magic Methods)
메타데이터
- post_id
- 82c6c01e9e52
- slug
- python-pop-the-complete-guide-to-procedural-programming-82c6c01e9e52
- url
- https://medium.com/@shirley_peng/python-pop-the-complete-guide-to-procedural-programming-82c6c01e9e52
- canonical_url
- https://medium.com/@shirley_peng/python-pop-the-complete-guide-to-procedural-programming-82c6c01e9e52
- author_url
- https://medium.com/@shirley_peng
- status
- ok
- fetched_at
- 2026-08-03 23:05:12