Module 10: Common Pitfalls
From a JavaScript developer's perspective, this module analyzes common conceptual pitfalls and error-prone points in Python.
1. Introduction
When you switch from one language to another, the trickiest parts are often not the new syntax, but the "gotchas" that seem similar but behave completely differently. These subtle differences can lead to hard-to-detect bugs and confusion.
This module is specifically designed for you—a developer transitioning from JavaScript to Python—to sort out some of the most common conceptual pitfalls.
💡 Learning Strategy: Don't just memorize. Understand the "why" behind each pitfall and compare it to JavaScript's behavior. This way, you will naturally avoid them in your actual coding.
2. Truthy vs. Falsy
In Python, empty collection types (like lists, dictionaries, tuples) are considered "falsy." This is a significant difference from JavaScript's behavior, where an empty array []
and an empty object {}
are both "truthy."
3. this
vs. self
In JavaScript class methods, this
is a keyword whose value is determined when the function is called. In Python instance methods, the first parameter (named self
by convention) explicitly represents the instance itself, and it is not a keyword.
4. Variable Scope
JavaScript (ES6+) has block-level scope (defined by {}
), while Python's scope is based on functions (or classes, modules). Variables defined in code blocks like for
loops will "leak" into the outer scope in Python.
5. Mutable Default Arguments
This is a very classic and notorious "gotcha" in Python. If a function's default argument is a mutable object (like a list or dictionary), that object will be shared across all calls. This is completely different from JavaScript's behavior.
6. null
/undefined
vs. None
JavaScript has two values to represent "nothing": null
(representing an "intentionally set empty value") and undefined
(representing "not defined"). In Python, there is only one corresponding concept: None
.
7. Summary
Understanding and mastering these differences will help you write robust, unsurprising Python code more quickly. When you encounter unexpected behavior, it's a good idea to come back to this list and check if you've fallen into one of these "traps."
Python Advanced Topics & Learning Resources
Explore advanced features of Python such as decorators, generators, and metaclasses, and get a resource path for continuous learning.
Module 11: Writing Pythonic Code
Learn how to write idiomatic, elegant, and efficient Python code, and truly think like a Python developer.