Загрузка...
Обновлено: 04.12.2024

7 ошибок в коде на Python, которые нужно исправить

Алексанян Андрон CEO IT Resume

Python — один из самых популярных языков программирования, который завоевал доверие разработчиков благодаря своей простоте, читабельности и мощным возможностям. Но, как и в любом другом языке, при работе с Python можно столкнуться с рядом распространенных ошибок, которые могут не только замедлить процесс разработки, но и привести к неожиданным результатам.

В этой статье мы рассмотрим частые ошибки, которые допускают как новички, так и опытные программисты, и разберем, как их избежать.

1. Не использовать итераторы

Почти все так или иначе совершали эту ошибку, вне зависимости от опыта в других языках программирования.

Типовая задача: пробежаться посписку в цикле for.

Стандартный подход - создать счетчик i и получить каждый элемент списка.

Правильный подход - вспомнить, что list - итерируемый объект.

Правильно:

for element in list_: foo(element)

Неправильно:

for i in range(len(list_)): foo(list_[i])

2. Не использовать ELSE в цикле

Python позволяет использовать блок else в циклах for.

Если цикл for завершился без прерывания операторами break или return, то будет выполнен блок else.

Правильно:

l = [1, 2, 3] num = 4 for n in l: if n == num : print("num found") break else: print("num not found")

Неправильно:

l = [1, 2, 3] num = 4 found = False for n in l: if n == num: found = True print("num found") break if not found: print("num not found")

3. Неправильное использование IF-ELSE

Когда вы проверяете некоторое условие внутри функции, иногда нет необходимости писать блок if-else - порой достаточно использовать только if.

Правильно:

def func(a): if a > 5: return True return False

Неправильно:

def func(a): if a > 5: return True else: return False

4. Возвращать разные типы данных в RETURN

Если вы возвращаете разные типы данных в блоке return в зависимости от ситуации, то это приводит к усложнению кода и ошибкам. Чтобы избежать таких ситуаций, при возникновении ошибки возбуждайте исключение.

Правильно:

def get_code(pswrd): if pswrd != "bicycle": raise ValueError else: return "42" try: code = get_code("car") print(f"code is {code}") except ValueError: print("Wrong pswrd")

Неправильно:

def get_code(pswrd): if pswrd != "bicycle": return None else: return "42" code = get_code("car") if code is None: print("Wrong pswrd") else: print(f"The code is {code}")

5. Неверное сравнение с TRUE

Самый лучший способ проверить, является ли переменная или выражение True> - использовать паттерн if cond: expr. Шаблоны if cond == True: expr и if cond is True: expr менее предпочтительны.

Правильно:

flag = True if flag: print("PEP 8 Style Guide prefers this pattern")

Неправильно:

flag = True if flag == True: print("This works, but is not the PEP 8 pattern")

6. Не использовать ZIP при итерировании списков

При итерировании нескольких списков возникает желание завести счетчик i с помощью range и получать элементы списков по индексу. Так делать не стоит - используйте функцию zip.

Правильно:

num = [1, 2, 3] let = ["A", "B", "C"] for n, l in zip(num, let): print(n, l)

Неправильно:

num = [1, 2, 3] let = ["A", "B", "C"] for index in range(len(num)): print(num[index], let[index])

7. Использовать KEY IN LIST

Если вы хотите проверить, встречается ли значение key в списке list, то не стоит всегда слепо использовать конструкцию key in list, т.к. это не всегда оптимально. Используйте множества - так вы пробежитесь не по всему списку, а только по уникальным элементам.

Правильно:

l = [1, 2, 3, 4, 1, 1, 2] if 3 in set(l): print("3 is in the list.") else: print("3 is NOT in the list.")

Неправильно:

l = [1, 2, 3, 4, 1, 1, 2] if 3 in l: print("3 is in the list.") else: print("3 is NOT in the list.")

Хотите проверить свои знания?

Попробуйте решить эту задачу на Python!
Решать бесплатно!