Как использовать backsla sh в PEP8, когда есть точка или запятая? - PullRequest
0 голосов
/ 07 мая 2020

Вот мой фрейм данных:

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

Мой вопрос: когда я хочу обернуть длинный текст, куда мне поместить backsla sh? После точки или до точки? Что правильно?

# 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']

Я также считаю, что если я использую круглые скобки, мне не нужно использовать backsla sh. Тогда какой вариант правильный?

# 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'])

1 Ответ

1 голос
/ 07 мая 2020

Объяснение

PEP8 предпочитает использование скобок вместо обратных косых черт, где это возможно .

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'])

Хотя можно было бы возразить что рекомендация не использовать пробел между конечной запятой и закрывающей круглой скобкой является исключением, которое подтверждает правило , что означает, что: ,df['col2'] не соответствует стандартам (хотя , df['col2'] по-прежнему соблюдает).

Несмотря на то, что 2 представленных выше варианта являются технически правильными, чаще всего используется :

(df.groupby('col1')
    .sum())
(df['col1'],
    df['col2'])

Примечание: отступ зависит от в контексте, который он используется. Приведенные выше примеры не следует использовать в качестве справочных. Также помните, что PEP8 - это просто рекомендация , существует множество сценариев ios, в которых правила должны быть нарушены, чтобы улучшить читаемость.

...