charr_prob = float(self.char_freq(kgram, char) * 1.0 / (self.kgram_freq(kgram) * 1.0))
Как я могу это исправить?
charr_prob = float(self.char_freq(kgram, char) * 1.0 / (self.kgram_freq(kgram) * 1.0))
Как я могу это исправить?
Длинные строки не обязательно плохи, если они не влияют на удобочитаемость. Это дело вкуса. Вы можете отключить предупреждение, добавив # 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
float
в версии Python 2. Вы также можете сделать from __future__ import division
и использовать версию Python 3 в обоих случаях.
- person Blender; 10.04.2018