什么';for循环左侧的长元组采用的Python样式是什么?

什么';for循环左侧的长元组采用的Python样式是什么?,python,Python,我正在遍历许多可能(非常不相关)参数的所有组合。如果我们有7个这样的参数,我们可能会有 fruit_list = ['apple', 'banana'] letter_list = ['a', 'b', 'c', 'd'] class_list = [SomeClass, AnotherClass] list_list = ... dict_list = ... animal_list = ... language_list = ... combinations = itertools.pro

我正在遍历许多可能(非常不相关)参数的所有组合。如果我们有7个这样的参数,我们可能会有

fruit_list = ['apple', 'banana']
letter_list = ['a', 'b', 'c', 'd']
class_list = [SomeClass, AnotherClass]
list_list = ...
dict_list = ...
animal_list = ...
language_list = ...

combinations = itertools.product(fruit_list, letter_list, ...)

for i, (fruit, letter, class_, list_, dict_, animal, language) in enumerate(combinations):
    ...

两个问题:首先,有没有一种更为规范的方法来做到这一点?我们可以有许多嵌套的for循环,但这同样令人毛骨悚然。第二,如果我们被这个问题所困扰,那么什么样的样式最适合在for循环中分解元组呢?我认为这与PEP 8中的任何内容都不匹配。

在循环中打破元组看起来更好:

for i, values in enumerate(combinations):
  fruit, letter, class_, list_, dict_, animal, language = values

我总是这样做:

for i, (
        fruit,
        letter,
        ...
        language) in enumerate(combinations):
    ...
for i, (fruit, letter, class_, list_, dict_, animal, language) in 
        enumerate(combinations):
    ...

PEP8给出了类似情况的示例,以及。 最好使用括号而不是反斜杠:

包装长行的首选方法是使用Python的 括号、括号和大括号内的行继续。长队 可以通过在中包装表达式在多行上断开 圆括号。这些应该优先使用,而不是使用反斜杠 用于行继续

因此,关于您的代码:一旦行达到79个字符,在括号中的逗号后将其打断,并开始一个新行,将其与左括号对齐,或使用双缩进(即8个空格),以避免混淆
for
语句及其主体。然而,与括号对齐是首选的方式

在此特定示例中,按如下方式包装:

for i, (
        fruit,
        letter,
        ...
        language) in enumerate(combinations):
    ...
for i, (fruit, letter, class_, list_, dict_, animal, language) in 
        enumerate(combinations):
    ...
考虑到您可能需要打断长元组,例如:

for i, (fruit, letter, class_, 
        list_, dict_, animal, language
        ) in enumerate(combinations):
    ...

因为政治公众人物8没有说,这取决于你(或其他人)的意见(不管怎样,它是)。这基本上是基于观点的问题。你想怎么做就怎么做。我的一个非常相关的问题是,如果那条线仍然不适合,比如说在80个字符之内,会发生什么?什么是公认的Python风格来分解左侧元组?这是骑乘侧,这是常见的情况。我从未见过左边的大小写。Use可以用同样的方式使用“\”或括号。