Привет! Я Гейб, мне 30 лет, я энтузиаст данных с более чем десятилетним опытом анализа и визуализации данных. Я увлечен обучением других мощи Python, машинного обучения и созданию эффективных информационных панелей.
Присоединяйтесь ко мне сегодня, когда я провожу вас в личное путешествие по 10 основным ошибкам Python, с которыми я сталкивался в своей карьере, и как вы можете их избежать. Так что берите чашечку кофе, садитесь поудобнее и вперед!
Раздел 1: Синтаксическая борьба
Синтаксические ошибки — слон в комнате
Когда я впервые начал свое путешествие по Python, я быстро понял, что одна небольшая синтаксическая ошибка может привести к сбою моего кода. Эти надоедливые опечатки и отсутствующие двоеточия были моей постоянной занозой в боку. Я считаю, что овладение синтаксисом Python имеет решающее значение, и вот чему я научился:
# Example 1: Missing Colon if condition # Oops, forgot the colon! print("Condition is true")
Чтобы избежать этой ошибки, всегда дважды проверяйте свой код на наличие отсутствующих двоеточий, круглых скобок и кавычек. Кроме того, обратите пристальное внимание на отступы, так как Python полагается на них для определения блочных структур.
Раздел 2: Бездна отступов
Отступы — Приручение зверя Питона
Отступы — еще один распространенный камень преткновения, и я думаю, что мы все когда-то падали в эту пропасть. Python плохо работает с непоследовательными или неправильными отступами. Вот фрагмент, иллюстрирующий проблему:
# Example 2: IndentationError def my_function(): print("Hello, World!") # Oops, wrong indentation level! my_function()
Чтобы избежать этой ошибки, следите за тем, чтобы во всем коде сохранялись одинаковые отступы. Я предлагаю использовать пробелы (не табуляцию) и придерживаться определенного количества пробелов, например четырех, для каждого уровня отступа.
Раздел 3: Проблемы с именами переменных
Именование переменных — хорошее, плохое и уродливое
Выбор осмысленных и описательных имен переменных имеет решающее значение для удобочитаемости и удобства сопровождения кода. Однако я был свидетелем многих проектов, страдающих от загадочных или вводящих в заблуждение имен переменных. Вот что я бы сделал:
# Example 3: Poor Variable Names a = 5 b = 10 c = a + b print(c)
Вместо этого выбирайте понятные имена, которые четко передают назначение переменной:
# Example 4: Improved Variable Names first_number = 5 second_number = 10 sum_of_numbers = first_number + second_number print(sum_of_numbers)
Используя описательные имена переменных, вы избавите себя и своих сотрудников от ненужной путаницы.
Раздел 4: Волшебные числа — скрытые препятствия
Волшебные числа — раскрытие тайны
Магические числа относятся к жестко запрограммированным числовым значениям, разбросанным по всему коду. Эти числа часто трудно расшифровать и сохранить.
Я считаю, что очень важно назначать их именованным константам для повышения удобочитаемости и удобства сопровождения кода:
# Example 5: Magic Numbers def calculate_circle_area(radius): return 3.14 * radius**2 # What does 3.14 represent? # Example 6: Named Constants PI = 3.14 def calculate_circle_area(radius): return PI * radius**2
Определив константы, такие как PI
в данном случае, вы сделаете свой код более понятным и упростите его модификацию в будущем.
Раздел 5: Ошибки «не на единицу» — опасности индексации
Ошибки «не на единицу» — The Index Gremlins
Одна из самых распространенных ошибок, с которыми я сталкивался, связана с ошибками при индексировании. Эти подлые ошибки могут быть довольно незаметными, вызывая неожиданное поведение в вашем коде. Вот пример:
# Example 7: Off-by-One Error my_list = [1, 2, 3, 4, 5] last_element = my_list[5] # Oops, index out of range! # Example 8: Corrected Code last_element = my_list[4] # Accessing the last element correctly
Чтобы избежать ошибок смещения на единицу, всегда помните, что индексация Python начинается с 0. Дважды проверяйте свои индексы, особенно при переборе списков или массивов.
Раздел 6: Путаница с импортом
Импорт — хороший, плохой и отсутствующий
Управление импортом может быть немного сложным, особенно при работе с большими проектами или внешними библиотеками. Я видел, как ошибки импорта срывали проекты и заставляли разработчиков ломать голову. Вот несколько советов, как ориентироваться в этом лабиринте:
# Example 9: Import Error from math import squareroot # Oops, should be sqrt, not squareroot! # Example 10: Corrected Code from math import sqrt
Всегда проверяйте, импортируете ли вы правильные модули и функции. Если вы не уверены, обратитесь к документации или используйте функции IDE, такие как автозавершение кода, чтобы избежать подобных ошибок.
Раздел 7: Столпотворение необработанных исключений
Обработка исключений — укрощение столпотворения
Неперехваченные исключения могут привести к полной остановке вашего кода. По моему опыту, игнорирование правильной обработки исключений может привести к кошмарам отладки.
Вот как сделать ваш код отказоустойчивым:
# Example 11: Unhandled Exception try: result = 10 / 0 # Oops, division by zero! except: print("An error occurred!") # Example 12: Proper Exception Handling try: result = 10 / 0 except ZeroDivisionError: print("Division by zero is not allowed!")
Явно обрабатывая исключения, вы можете изящно восстанавливаться после ошибок, предоставлять информативные сообщения об ошибках и обеспечивать бесперебойную работу кода.
Раздел 8: Беспредел изменчивости
Изменчивость против неизменяемости — ходьба по канату
Python различает изменяемые и неизменяемые объекты, что может привести к неожиданному поведению, если его неправильно понять. Я столкнулся с многочисленными проблемами, связанными с изменяемыми объектами, особенно при работе со списками.
Вот пример:
# Example 13: Mutable Object Surprise 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]
Чтобы избежать этой ловушки, я предлагаю использовать неизменяемые объекты в качестве аргументов по умолчанию и инициализировать изменяемые объекты внутри функции:
# Example 14: Fixed Code 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]
Следуя этому подходу, вы гарантируете, что аргумент по умолчанию правильно повторно инициализируется при каждом вызове функции.
Раздел 9: Пренебрежение документацией
Документирование кода — подарок себе в будущем
Документацию часто упускают из виду, но она играет решающую роль в поддержке и совместном использовании кода. Пренебрежение надлежащей документацией может оставить вас в будущем и других разработчиков в замешательстве.
Вот мой совет:
# Example 15: Undocumented Code def calculate_area(length, width): return length * width # Example 16: Well-Documented Code def calculate_area(length, width): """ Calculate the area of a rectangle. Args: length (float): The length of the rectangle. width (float): The width of the rectangle. Returns: float: The calculated area. """ return length * width
Добавляя четкие и краткие строки документации к своим функциям, вы делаете свой код более понятным и предоставляете ценный контекст себе и другим.
Раздел 10: Пренебрежение тестированием
Тестирование — система безопасности вашего кода
Пренебрежение надлежащим тестированием может привести к неожиданным ошибкам и ошибкам. Хотя это может показаться трудоемким, инвестиции в тестирование избавят вас от головной боли в долгосрочной перспективе.
Мое мнение:
# Example 17: Neglecting Testing def square_root(n): return n**0.5 # Example 18: Adding Tests def square_root(n): """ Calculate the square root of a number. Args: n (float): The number to calculate the square root of. Returns: float: The square root of the number. """ if n < 0: raise ValueError("Cannot calculate square root of a negative number.") return n**0.5 # Example 19: Test Example assert square_root(9) == 3
Написав тесты для своего кода, вы можете убедиться, что он ведет себя так, как ожидается, и выявить потенциальные проблемы на ранней стадии. Платформы тестирования, такие как unittest
или pytest
, могут помочь упростить этот процесс.
Вывод: «Python Zen — Embrace the Snake!»
В этом путешествии по 10 основным ошибкам Python мы обнаружили распространенные ловушки и узнали, как их избежать. Помните, Python — мощный инструмент, но с большой силой приходит и большая ответственность. Изучая синтаксис языка, обращая внимание на детали и внедряя передовые методы кодирования, вы будете на пути к тому, чтобы стать экстраординарным Pythonista!
Итак, примите змею, продолжайте учиться и удачного кодирования!
Надеюсь, вам понравился этот личный рассказ о моих встречах с ошибками Python. Если вы нашли его полезным, не стесняйтесь поделиться им со своими коллегами-энтузиастами Python. Давайте расти вместе как сообщество и помогать другим избегать этих надоедливых ловушек.
Если у вас есть какие-либо вопросы или вы хотите поделиться своими историями об ошибках Python, я буду рад услышать от вас в комментариях ниже. До следующего раза продолжайте писать код, и пусть ваше путешествие по Python будет полным успеха и радости!
Надеюсь, эта статья была вам полезна. Спасибо, что нашли время, чтобы прочитать его.
Если вам понравилась эта статья, вы можете помочь мне поделиться ею с другими:👏хлопать в ладоши, 💬комментировать и обязательно 👤+ подписаться.
Кто я? Меня зовут Гейб А., я опытный архитектор визуализации данных и писатель с более чем десятилетним опытом. Моя цель — предоставить вам простые для понимания руководства и статьи по различным темам науки о данных. Благодаря более 350+ статьям, опубликованным в более чем 25 публикациях на Medium, мне доверяют в индустрии обработки и анализа данных.
Будьте в курсе. Будьте в курсе последних новостей и обновлений в области творческого ИИ — следите за публикацией AI Genesis.
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу