PyCharm 重新格式化代码不会换行到指定长度

PyCharm reformat code does not wrap line to specified length

当我突出显示 PyCharm 2020.3 社区版中的一段 python 代码并尝试重新格式化代码操作时,重新格式化的代码不遵守我(相信我)指定的 80 个字符限制在设置中。

我做错了什么?

我的设置如下图:

比如我要86字行:

        normalized_stop_band_edge: float = prms['stop_band_edge_in_hz'] * sam_int_in_s

重新格式化为,例如:

        normalized_stop_band_edge: float = prms['stop_band_edge_in_hz'] * \
                                           sam_int_in_s

换行是特定于语言的。在问题中显示了一般 IDE 设置的屏幕截图,但如果使用 Python 文件,一般编辑器设置将被语言特定设置取代。

对于问题中的示例代码,使用 Reformat Code (Ctrl + Alt + L) 换行的行长度限制必须配置 2 个设置:在 File > Settings > Editor > Code Style > Python > Wrapping and Braces.

  1. Hard wrap at (80).
  2. Ensure right margin is not exceeded

但这还不够。必须考虑问题中的示例有 2 级缩进(8 个空格或 2 个制表符)。这将需要 运行 Reformat Code (Ctrl + Alt + L) 两次,并且示例行位于具有 2 级缩进的范围内。例如:

class MyClass:
    @staticmethod
    def my_func():

        normalized_stop_band_edge: float = prms['stop_band_edge_in_hz'] * sam_int_in_s

最初:

Ctrl + Alt + L一次后:

Ctrl + Alt + L 两次后: