ned*_*dim 33 python line-breaks
有时,Python中包含三元运算符的行会变得太长:
answer = 'Ten for that? You must be mad!' if does_not_haggle(brian) else "It's worth ten if it's worth a shekel."
Run Code Online (Sandbox Code Playgroud)
是否有推荐的方法使用三元运算符将换行符设置为79个字符?我没有在PEP 8中找到它.
Mar*_*ers 40
answer = (
'Ten for that? You must be mad!' if does_not_haggle(brian)
else "It's worth ten if it's worth a shekel.")
Run Code Online (Sandbox Code Playgroud)
这称为隐式线连接.
以上使用PEP8所有 - 缩进 - 一步 - 更多样式(称为悬挂缩进).您还可以缩进多余的行以匹配左括号:
answer = ('Ten for that? You must be mad!' if does_not_haggle(brian)
else "It's worth ten if it's worth a shekel.")
Run Code Online (Sandbox Code Playgroud)
但这会让你更快地达到80列的最大值.
精确地放置if和else部分取决于你; 我在上面使用了我的个人偏好,但是没有任何人同意的运营商的具体风格.
Pet*_*ood 33
包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续.通过将表达式包装在括号中,可以在多行中分割长行.这些应该优先使用反斜杠来继续行.
answer = ('Ten for that? You must be mad!'
if does_not_haggle(brian)
else "It's worth ten if it's worth a shekel.")
Run Code Online (Sandbox Code Playgroud)
小智 11
请记住Python 之禅的建议:“可读性很重要”。
当三元运算符都在一行上时,它的可读性最高。
x = y if z else w
当您的条件或变量超过 79 个字符时(参见 PEP8),可读性开始受到影响。(可读性也是为什么字典/列表理解最好保持简短的原因。)
因此,与其尝试使用括号来换行,不如将其转换为常规if块,您可能会发现它更具可读性。
if does_not_haggle(brian):
answer = 'Ten for that? You must be mad!'
else:
answer = "It's worth ten if it's worth a shekel."
Run Code Online (Sandbox Code Playgroud)
奖励:上述重构揭示了另一个可读性问题:does_not_haggle反转逻辑。如果您可以重写该函数,这将更具可读性:
if haggles(brian):
answer = "It's worth ten if it's worth a shekel."
else:
answer = 'Ten for that? You must be mad!'
Run Code Online (Sandbox Code Playgroud)