python-3.x - 当有点或逗号时如何在 PEP8 中使用反斜杠?
问题描述
这是我的数据框:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'col1':['A','A','A','B','B','B'], 'col2':['C','D','D','D','C','C'],
'col3':[.1,.2,.4,.6,.8,1]})
In [3]: df
Out[4]:
col1 col2 col3
0 A C 0.1
1 A D 0.2
2 A D 0.4
3 B D 0.6
4 B C 0.8
5 B C 1.0
我的问题是:当我想换行长文本时,我应该把反斜杠放在哪里?在点之后还是在点之前?哪个是对的?
# option 1 backslash after dot or comma
df.groupby('col1').\
sum()
df['col1'],\
df['col2']
# option 2 backslash before dot or comma
df.groupby('col1')\
.sum()
df['col1']\
,df['col2']
我还发现,如果我使用括号,我就不必使用反斜杠。那么哪个选项是正确的呢?
# option 1: no backslash and dot or comma in the new line
(df.groupby('col1')
.sum())
(df['col1']
,df['col2'])
# option 2: no backslash and dot or comma in the old line
(df.groupby('col1').
sum())
(df['col1'],
df['col2'])
# option 3: backslash after dot or comma
(df.groupby('col1').\
sum())
(df['col1'],\
df['col2'])
# option 4: backslash before dot or comma
(df.groupby('col1')\
.sum())
(df['col1']\
,df['col2'])
解决方案
解释
PEP8 没有说明点或逗号需要与表达式在同一行(尽管在给出的每个示例中都是这样)。
解决方案
技术上正确的答案是:
# option 1: no backslash and dot or comma in the new line
(df.groupby('col1')
.sum())
(df['col1']
,df['col2'])
# option 2: no backslash and dot or comma in the old line
(df.groupby('col1').
sum())
(df['col1'],
df['col2'])
尽管有人可能会争辩说,反对在尾随逗号和右括号之间使用空格的建议是证明 rule 的例外,这意味着:,df['col2']
不遵循标准(尽管, df['col2']
仍然如此)。
尽管上面介绍的 2 个选项在技术上是正确的,但以下是最常用的:
(df.groupby('col1')
.sum())
(df['col1'],
df['col2'])
注意:缩进取决于它使用的上下文。上面的例子不应该作为参考。还要记住PEP8 只是一个指南,有很多场景应该打破规则以提高可读性。
推荐阅读
- vue.js - 尝试使用 Vuelidate 显示错误会阻止暂存表单继续进行
- c++ - 在 C++17 编译器上运行此 C++14 代码时出现错误。为什么?
- authorization - 有没有办法在 .Net 5 的 AuthorizationHandler 中重定向?
- javascript - 如何停止 Servlet 从 Html 重定向
- android - 重复协程工作者
- c# - 在组合框 wpf 中检查空值时异常不起作用
- python - 尝试使用 selenium (Python) 单击验证码框时出错
- python - 如何将命名变量传递给python中的bash脚本?
- java - 如何从嵌套的 json volley/android 中检索数据
- python-3.x - 尝试在 python 3.9.4 上安装(py -m pip install tables)时出现问题