Слишком длинная строка в стиле Pycode E501 (118 > 79 символов)

charr_prob = float(self.char_freq(kgram, char) * 1.0 / (self.kgram_freq(kgram) * 1.0))

Как я могу это исправить?

1 ответ

Длинные строки не обязательно плохи, если они не влияют на читабельность. Это вопрос вкуса. Вы можете отключить предупреждение, добавив # noqaили вы можете разбить строку на несколько:

Например, используя круглые скобки:

charr_prob = (float(self.char_freq(kgram, char) * 1.0 
              / (self.kgram_freq(kgram) * 1.0)))

Как float уже использует скобки:

charr_prob = float(self.char_freq(kgram, char) * 1.0
             / (self.kgram_freq(kgram) * 1.0))

Вы также можете использовать \ в конце первой строки включить вторую строку в текущем выражении. Здесь это будет избыточно с круглыми скобками, определенными для float, но при условии, что вы удалите вызов float, это будет:

charr_prob = (self.char_freq(kgram, char) * 1.0) \
             / (self.kgram_freq(kgram) * 1.0)

Вы также можете упростить выражение, когда это возможно. Предполагая, что вы используете Python3 (и, таким образом, / не является целочисленным делением):

charr_prob = self.char_freq(kgram, char) / self.kgram_freq(kgram)

Или для Python2 (79 символов!):

charr_prob = float(self.char_freq(kgram, char)) / float(self.kgram_freq(kgram))

Или, как предлагает @Blender, даже:

charr_prob = float(self.char_freq(kgram, char)) / self.kgram_freq(kgram)

... второй float быть ненужным в качестве первого операнда / это уже поплавок. Другая возможность - импортировать поведение / из Python3 в Python2:

from __future__ import division
Другие вопросы по тегам