4 Python Mistakes That Make You Look Like a Beginner (And How to Fix Them)

Nitin Sharma
3 min readSep 12, 2024

--

Python is widely celebrated for being beginner-friendly, but this ease can also lead to some habits that scream “newbie.” Whether you’re just starting out or looking to refine your skills, here are four common mistakes beginners make and how to fix them like a seasoned Python developer.

1. Not Using `enumerate()`

One common mistake that beginners make is not using the `enumerate()` function when iterating through lists. Let's first look at a typical example:

vals = [’Python’, 'is’, 'fun!’]
for val in vals:
print(val)

Output:

Python
is
fun!

However, what if you need to access the index of each item in the list as well? Many beginners resort to this approach:

vals = ['Python', 'is', 'fun!']
for i in range(len(vals)):
print(i, vals[i])

Output:

0 Python
1 is
2 fun!

This works, but it’s clunky and doesn’t clearly express your intent. The more Pythonic way is to use the `enumerate()` function, which simplifies the process and makes your code cleaner:

vals = ['Python', 'is', 'fun!']
for idx, val in enumerate(vals):
print(idx, val)

Output:

0 Python
1 is
2 fun!

Using `enumerate()` makes your code more readable and intuitive, which is a hallmark of professional Python code.

2. Misusing `try` and `except`

Another common mistake is the improper use of `try` and `except` blocks. Beginners often use a general `except` clause, catching all exceptions. Consider this code:

try:
value = int(input("Enter a number: "))
except:
print("Something went wrong!")

While this may seem to work, catching all exceptions is a bad practice. It can mask errors like `KeyboardInterrupt` or `SystemExit` that shouldn't be caught, making debugging difficult. A better approach is to catch specific exceptions:

try:
value = int(input("Enter a number: "))
except ValueError:
print("Please enter a valid number.")

By specifying `ValueError`, you're explicitly telling Python to catch errors related to invalid integer conversions, while letting other types of exceptions propagate properly.

3. Using Mutable Default Arguments

One of the trickiest issues in Python involves using mutable objects, like lists or dictionaries, as default argument values. Let’s look at an example:

def append_to_list(item, my_list=[]):
my_list.append(item)
return my_list
print(append_to_list(1)) # [1]
print(append_to_list(2)) # [1, 2]

You might expect `[2]` for the second call, but instead, you get `[1, 2]`. This is because Python only evaluates the default argument once. The list persists between function calls.

To fix this, use `None` as the default argument and initialize the list inside the function:

def append_to_list(item, my_list=None):
if my_list is None:
my_list = []
my_list.append(item)
return my_list
print(append_to_list(1)) # [1]
print(append_to_list(2)) # [2]

This ensures a new list is created for each function call, preventing unwanted side effects.

4. Writing Unnecessary Lambda Functions

Lambdas are anonymous functions in Python and are often used for small, throwaway functions. However, beginners sometimes overuse them, writing code that’s harder to read and maintain. Let’s take an example:

add=lambda x,y:x+y

This is equivalent to writing a regular function:

def add(x, y):
return x + y

While both work, using a `lambda` here doesn’t offer any real advantage. Lambdas are best suited for simple, single-use cases, like passing a function to `map()` or `filter()`. If the function needs more logic, it's better to define it using `def`.

Consider another example:

nums = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, nums)

Using a list comprehension instead is often more readable:

squared = [x ** 2 for x in nums]

In general, prefer list comprehensions or named functions over lambdas unless they significantly simplify your code.

Conclusion

These common mistakes are easy to make when you’re new to Python, but they’re also easy to fix. By adopting best practices—using `enumerate()`, catching specific exceptions, avoiding mutable default arguments, and not overusing lambdas—you’ll write cleaner, more professional code. Python is a language that rewards clarity and simplicity, so the more you practice these principles, the better your code will become.

I hope this article has been helpful to you. Thank you for taking the time to read it

If you enjoyed this article, you can help me share this knowledge with others by:👏 claps, be sure to comment, and 👤+ follow Nitin Sharma

--

--