Python 黑色风格差异
Python black style discrepancy
我正在使用 black 来格式化我的 python 代码。我观察到以下行为。我承认这是一个非常具体的案例,但它让我很紧张。
假设我有以下代码:
@pytest.mark.parametrize(
"first",
["second"],
)
black
不会改变这一点。但是,如果我删除 ["second"]
:
之后的尾随逗号
@pytest.mark.parametrize(
"first",
["second"]
)
black
进行了很好的重新排序:
@pytest.mark.parametrize("first", ["second"])
另一方面,让我们看看以下内容:
@pytest.mark.parametrize(
"This is a very long line. Black will not be able to to a linebreak here.",
["second"],
)
在这种情况下,black
也不会改变任何东西。到目前为止,一切都很好。现在,我再次删除 ["second"]
之后的尾随逗号:
@pytest.mark.parametrize(
"This is a very long line and black will not be able to do a line break here.",
["second"]
)
由于行太长,black
没有像以前那样很好地重新排列成一行。但是,black
在 ["second"]
:
之后添加了一个尾随逗号
@pytest.mark.parametrize(
"This is a very long line and black will not be able to do a line break here.",
["second"],
)
我不喜欢这样。当我在代码中遇到这样的列表时,我总是倾向于删除尾随的逗号以强制对一行进行重新排序。但是,在大多数情况下,black
会再次添加它...
根据我的理解,黑色行为是预料之中的,因为目的之一是限制 git 差异内的更改数量。
如果行太长,你已经处于多行书写状态。如果你是多行写作,那么它应该以逗号结尾。
这样,如果您在元组、列表等中添加元素,或者在方法或函数中添加参数,它不会为您添加逗号的行生成差异。
如果相反你在mono-line写的不是太长,黑色会考虑你是否加了尾随的逗号。如果尾随逗号,它将转到 multi-line,否则将鼓励 mono-line.
a = [1, 2,]
# goes to
a = [
1,
2,
]
# and
a = [1, 2]
# remains:
a = [1, 2]
我正在使用 black 来格式化我的 python 代码。我观察到以下行为。我承认这是一个非常具体的案例,但它让我很紧张。
假设我有以下代码:
@pytest.mark.parametrize(
"first",
["second"],
)
black
不会改变这一点。但是,如果我删除 ["second"]
:
@pytest.mark.parametrize(
"first",
["second"]
)
black
进行了很好的重新排序:
@pytest.mark.parametrize("first", ["second"])
另一方面,让我们看看以下内容:
@pytest.mark.parametrize(
"This is a very long line. Black will not be able to to a linebreak here.",
["second"],
)
在这种情况下,black
也不会改变任何东西。到目前为止,一切都很好。现在,我再次删除 ["second"]
之后的尾随逗号:
@pytest.mark.parametrize(
"This is a very long line and black will not be able to do a line break here.",
["second"]
)
由于行太长,black
没有像以前那样很好地重新排列成一行。但是,black
在 ["second"]
:
@pytest.mark.parametrize(
"This is a very long line and black will not be able to do a line break here.",
["second"],
)
我不喜欢这样。当我在代码中遇到这样的列表时,我总是倾向于删除尾随的逗号以强制对一行进行重新排序。但是,在大多数情况下,black
会再次添加它...
根据我的理解,黑色行为是预料之中的,因为目的之一是限制 git 差异内的更改数量。
如果行太长,你已经处于多行书写状态。如果你是多行写作,那么它应该以逗号结尾。
这样,如果您在元组、列表等中添加元素,或者在方法或函数中添加参数,它不会为您添加逗号的行生成差异。
如果相反你在mono-line写的不是太长,黑色会考虑你是否加了尾随的逗号。如果尾随逗号,它将转到 multi-line,否则将鼓励 mono-line.
a = [1, 2,]
# goes to
a = [
1,
2,
]
# and
a = [1, 2]
# remains:
a = [1, 2]