ST3 中多行字符串中的 Linter "line too long" 错误和过多的空格
Linter "line too long" error and excessive whitespace inside multi-line strings in ST3
所以有两个问题。我在 Sublime Text 3 中有这段代码,我在其中使用 Anaconda 包(相关的白色 space 将显示为 •
,因为它在 ST3 中显示;显示 Python.sublime-settings post):
elif choice == "taunt bear" and not bear_moved:
••••••••print("The•bear•has•moved•from•the•door.•You•can•go•through•it•now"
)
bear_moved = True
第一个问题:
我启用了 Word Wrap 并将标尺设置为 80,因此它会自动换行代码,在带有 "print..." 的行上恰好有 79 个字符,在下一行有 1 个字符。但是 linter 给我一个错误“[W] PEP8 (E501):行太长(80 > 79 个字符)”。我在下一行自动缩进了右括号,所以没有违反“每行 79 个字符”的规则。这里可能是什么问题?是否该行应始终少于 80 个字符,即使它跨越多行?
第二题:
elif choice == "taunt bear" and not bear_moved:
••••••••print("""The•bear•has•moved•from•the•door.
•••••••••••••••••You•can•go•through•it•now""")
bear_moved = True
在这里我想摆脱“>79个字符”的错误,并制作一个多行字符串。问题是,当我将字符串中的两个句子分成两行以便能够根据 PEP8 规则对齐它们时,我必须将它们缩进,而缩进意味着字符串中过多的 whitespace,这不是什么我想。这是理想情况下它应该如何工作,在第一句结束后立即使用所需的 space 字符,并且没有白色 space 用于缩进字符串的后半部分:
elif choice == "taunt bear" and not bear_moved:
••••••••print("""The•bear•has•moved•from•the•door.•
You•can•go•through•it•now""")
bear_moved = True
Python.sublime-设置:
{
// editor options
"draw_white_space": "all",
// tabs and whitespace
"auto_indent": true,
"rulers": [80],
"smart_indent": true,
"tab_size": 4,
"trim_automatic_white_space": true,
"use_tab_stops": false,
"word_wrap": true,
"wrap_width": 80
}
您可以利用 Python 字符串连接机制并将字符串写在单引号中,如示例所示:
elif choice == "taunt bear" and not bear_moved:
••••••••print("The•bear•has•moved•from•the•door.•"
"You•can•go•through•it•now")
bear_moved = True
因此您的代码符合 PEP8 标准,并且字符串采用所需格式。
所以有两个问题。我在 Sublime Text 3 中有这段代码,我在其中使用 Anaconda 包(相关的白色 space 将显示为 •
,因为它在 ST3 中显示;显示 Python.sublime-settings post):
elif choice == "taunt bear" and not bear_moved:
••••••••print("The•bear•has•moved•from•the•door.•You•can•go•through•it•now"
)
bear_moved = True
第一个问题:
我启用了 Word Wrap 并将标尺设置为 80,因此它会自动换行代码,在带有 "print..." 的行上恰好有 79 个字符,在下一行有 1 个字符。但是 linter 给我一个错误“[W] PEP8 (E501):行太长(80 > 79 个字符)”。我在下一行自动缩进了右括号,所以没有违反“每行 79 个字符”的规则。这里可能是什么问题?是否该行应始终少于 80 个字符,即使它跨越多行?
第二题:
elif choice == "taunt bear" and not bear_moved:
••••••••print("""The•bear•has•moved•from•the•door.
•••••••••••••••••You•can•go•through•it•now""")
bear_moved = True
在这里我想摆脱“>79个字符”的错误,并制作一个多行字符串。问题是,当我将字符串中的两个句子分成两行以便能够根据 PEP8 规则对齐它们时,我必须将它们缩进,而缩进意味着字符串中过多的 whitespace,这不是什么我想。这是理想情况下它应该如何工作,在第一句结束后立即使用所需的 space 字符,并且没有白色 space 用于缩进字符串的后半部分:
elif choice == "taunt bear" and not bear_moved:
••••••••print("""The•bear•has•moved•from•the•door.•
You•can•go•through•it•now""")
bear_moved = True
Python.sublime-设置:
{
// editor options
"draw_white_space": "all",
// tabs and whitespace
"auto_indent": true,
"rulers": [80],
"smart_indent": true,
"tab_size": 4,
"trim_automatic_white_space": true,
"use_tab_stops": false,
"word_wrap": true,
"wrap_width": 80
}
您可以利用 Python 字符串连接机制并将字符串写在单引号中,如示例所示:
elif choice == "taunt bear" and not bear_moved:
••••••••print("The•bear•has•moved•from•the•door.•"
"You•can•go•through•it•now")
bear_moved = True
因此您的代码符合 PEP8 标准,并且字符串采用所需格式。