Питон
5 лучших практик Python для заметного улучшения качества кода
Начните использовать эти практики с самого начального уровня, чтобы стать хорошим программистом.
Начните изучение Python с лучших практик!
Все было иначе, когда я начинал с Python. Как и я, многие другие неосознанно усваивают несколько плохих методов кодирования на этапе новичка.
Эти методы могут выполнить вашу работу, но в долгосрочной перспективе они потерпят неудачу, и тогда будет очень сложно найти ошибку и исправить ее.
Учась на ошибках и опыте, я перечислил 5 лучших практик, а также плохие практики, которых следует избегать 😉
Я сделал эту статью довольно короткой, чтобы вы могли быстро закончить ее и освоить самые полезные и экономящие время лучшие практики Python. 🏆
Вы можете перейти к своей любимой части с индексом ниже.
· Stop importing all using import * · Specify the exception in the Try-Except · Use Dictionary methods · Use zip() to iterate over multiple lists · Open a file using “with”
Начнем..🚀
Прекратить импортировать все с помощью импорта *
Чтобы начать использовать Python для различных задач аналитики и автоматизации, нам нужно импортировать функции и классы из пакета Python.
Одна из наиболее распространенных практик, которым следуют новички, — это импорт всего из пакета с помощью import *
.
🚩 Оператор import *
импортирует все функции и классы, которые могут конфликтовать с определяемыми вами функциями или функциями других импортируемых вами библиотек. Таким образом, всегда будет риск переопределения функции или переопределения переменной.
🚩 К тому же, при использовании import *
сложно распознать, что импортируется из какой именно библиотеки, что снижает читабельность кода.
Поэтому хорошей практикой является импорт только необходимых методов/функций из пакета, такого как import function_name from package_name
. ✔️
Например, импорт функции Counter из библиотеки коллекций
from collections import Counter
Что ж, если вы все же хотите импортировать все функции из пакета, вы можете сделать это, не говоря import *
. Классический пример этого варианта использования — импорт всего из pandas для анализа данных.
❌ Плохая практика: from pandas import *
✔️ ️Хорошая практика: import pandas as pd
И тогда вы можете использовать все функции из пакета pandas с префиксом pd.
, например, pd.DataFrame()
Укажите исключение в Try-Except
Как и у любого новичка, у меня была плохая привычка не упоминать исключение в предложении except оператора try-except.
например, отсутствие упоминания каких-либо исключений в предложении exclude не дает нам никакого представления о том, что именно произошло, когда выполняется предложение exclude.
В идеале в a
или b
должна быть какая-то ошибка, но отсутствие упоминания исключения в предложении кроме исключения не дает нам представления о том, что происходит.
Также без упоминания исключений мы не можем отловить конкретную ошибку в коде и, следовательно, слабый контроль над потоком кода.
Это можно превратить в хорошую практику, упомянув исключение, как показано ниже.
Обработка NameError
в предложении except
дает нам точную причину невыполнения предложения try
. ✔️
Вы можете найти все исключения в Python здесь, а подробности о том, как использовать try-except, можно найти здесь.
Используйте словарные методы
Возможно, вы знаете методы словаря .keys(), .values() и .items() для доступа только к ключам, значениям и парам ключ-значение соответственно.
Если вы не знаете, вот краткий пример.
# Create a dictionary with, # keys 'A', 'B', 'C', 'D' # values 1001, 2002, 3003, 4004 respectively mydict = {'A': 1001, 'B': 2002, 'C': 3003, 'D': 4004}
Как видно на рисунке выше, пару ключ — значение в виде кортежа можно извлечь с помощью .items()
.
Однако иногда он используется неправильно. например, для отображения ключей и значений из словаря с помощью цикла for некоторые программисты пишут,
В приведенном выше сценарии mydict.keys()
в цикле for не нужен, а mydict[keys]
в операторе печати менее эффективен. 🚩
Вместо этого мы можем использовать mydict.items()
, который более эффективен, как показано ниже.
Таким образом, мы всегда можем распаковать ключи и значения из кортежей ключ-значение, сгенерированных методом .items()
. ✔️
Если вы хотите узнать больше о словарях в Python, вот краткое чтение.
Используйте zip() для перебора нескольких списков
Одной из распространенных плохих практик, которую я заметил и даже использовал, когда был новичком, было использование индекса для перебора нескольких итераций, таких как списки, словари.
❌ Плохая практика выглядит,
Видите ли, это не совсем неправильно, поскольку генерирует желаемый результат. Однако это неэффективно и не является хорошей практикой.
Вместо этого используйте более удобочитаемую функцию zip()
. По определению функция zip()
в python используется для агрегирования элементов из нескольких итерируемых объектов поэлементно в итерацию кортежей. ✔️
Это свойство функции zip()
можно использовать в цикле for для перебора нескольких итерируемых объектов (списков или словарей) в Python.
Просто это!
Откройте файл, используя «с»
Открытый файл должен быть закрыт сразу после завершения работы — это лучшая практика.
Я, как и миллионы других, использовал open, close, read, write для работы с файлами, как показано ниже,
f = open('new_file.txt', 'w') f.write('This is first line') f.close()
Проблема в том, что последняя строка f.close()
в основном забыта! 🚩
И тогда, если методы write/read
выкинут исключение, файл не будет закрыт.
Лучшей альтернативой здесь является использование with
для открытия и редактирования файла, как показано ниже.
with open('new_file.txt', 'w') as f: f.write('This is first line')
Таким образом, вам не нужно закрывать файл исключительно. Как только вы пишете новую строку кода за пределами отступа оператора with
, файл автоматически закрывается. ✔️
Надеюсь, вы быстро закончили эту статью и нашли ее полезной.
Принятие этих лучших практик может сэкономить огромное количество времени, потраченного на отладку и понимание кода в будущем. 💯
Я использую Python уже более 4 лет и до сих пор изучаю передовой опыт, чтобы улучшить качество своего кода. 💪
Хотите читать неограниченное количество историй на Medium??
💡 Рассмотрите вариант Стать участником Medium, чтобы получить неограниченный доступ к историям на Medium и ежедневным интересным дайджестам Medium. Я получу небольшую часть вашего гонорара и никаких дополнительных затрат для вас.
💡 Не забудьте Подписаться на мою рассылку, чтобы получать первые экземпляры моих статей.
Спасибо, что прочитали!