Красивый Питон — часть 5. Другие идиомы Python.

Это пятый пост из серии статей об идиомах Python. В статье рассмотрим некоторые идиомы Python, которые не были описаны в прошлых постах, но достойны внимания. Внутри описаны правила именования, импорта, а так же польза контекст-менеджеров.

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

Идиомы Python, достойные упоминания

Правила именования

Важно придерживаться определенных правил именования при программирование. Запомнить их займет всего несколько минут, в то время как польза от них — бесценна.

#Правила именования
#Классы
class CamelCaseClass:
  #код класса
  
#Функции
def underscore_separated_function():
  #код функции
  
#Переменные
underscore_separated_var = True
#'Приватные' переменные
_underscore_prefix = True

Довольно просто и понятно, комментировать особо нечего. Однако стоит отметить, что в Python нет приватных переменных, как в Java. Но добавление символа подчеркивания (_) указывает, что переменная не должна быть вызвана другими приложениями. Это что-то вроде кодекса чести.

Импорт

В Python есть много способов импорта классов и пакетов. Тем не менее, некоторые лучше и предпочтительнее других.

#Не делайте так
from package import *
var = package_function()

#По возможности не делайте так
from package import package_function
var = package_function()

#Лучший способ!
import package
var = package.package_function()

Думаю, не стоит объяснять, что последний вариант ощутимо облегчает читаемость кода. При чтении сразу понятно, откуда берутся используемые функции.

Контекст-менеджеры

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

#Контекст-менеджер с обработкой файла
with open('file.ext') as f:
  contents = f.read()
  
#Без менеджеров контекста вам пришлось бы писать так:
f = open('file.ext')
try:
  contents = f.read()
finally:
  f.close()

Приведенные выше пример ярко показывает пользу менеджеров контекста. Вам не нужно вызывать метод file.close() после завершения обработки файла, все это язык сделает за вас.

 

Это был последний пост из серии статей, рассказывающих про идиомы Python. Надеюсь, вы узнали что-то новое из этой или других статей цикла. Стоит отметить, что 5 статей, без сомнения, не охватывают всех возможностей языка. В них описаны далеко не все полезные приемы и способы написания кода. Тем не менее, использование описанных методик при написании ваших проектов поможет им стать более лаконичными и удобными для восприятия.
Спасибо Jamal Moir за замечательные советы.