Стиль Python - Должны ли операторы быть вложенными в контекстный менеджер, который не требует контекста? - PullRequest
0 голосов
/ 24 января 2019

Есть ли руководство по стилю или причина для предпочтения одного из этих шаблонов другому?

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

1) Весь код внутри с контекстом.

with open(file) as f:
    text = f.read()
    data = text.split(',')
    result = my_func(data)
    # etc.

2) Только необходимый код внутри с контекстом.

with open(file) as f:
    text = f.read()

data = text.split(',')
result = my_func(data)
# etc.

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что читаемость всегда является ориентиром при отсутствии каких-либо «руководств по стилю» - вы хотите легко увидеть все случаи использования переменной менеджера контекста («f» выше), пока она находится в области видимости. Разница между блоком из одной и четырех строк в этой видимости незначительна, но между тремя и 50 строками это, вероятно, равно.

...