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

我怎样才能解决这个问题?

4

1 回答 1

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
于 2018-04-10T09:01:27.153 回答