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