Лучший стиль для перебора небольшого количества элементов в Python? - PullRequest
2 голосов
/ 14 мая 2011

Я только что читал презентацию на python и заметил, что автор пропустил круглые скобки кортежа для элементов, которые нужно перебрать, и меня поразило, что я могу быть склонен оставить их. - чтение PEP-8 не дало однозначного ответа, и я не хотел «отступать» от старого «явное лучше, чем неявное» без некоторого обсуждения; так что ...

Что вы предпочитаете? Как вы думаете, что является более питонным в этих двух эквивалентных для утверждений (ограничить обсуждение его использования в для утверждений).

>>> # Some setup
>>> x, y, z = 1, 'Hi', True
>>> 
>>> #Style 1: Implicit tuple
>>> for i in x, y, z:
    print(i)


1
Hi
True
>>> # Style 2: Explicit tuple
>>> for i in (x, y, z):
    print(i)


1
Hi
True
>>> 

Ответы [ 4 ]

3 голосов
/ 14 мая 2011

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

Например:

for name in relative_names:
    print name

против

for name in "Tyler", "Robert", "Marla", "Chloe", "Lou":
    print name
1 голос
/ 14 мая 2011

Я бы всегда предпочел:

>>> # Some setup
... some_values = 1, 'Hi', True,
>>> 
>>> # Style 3: named tuple
... for value in some_values:
...     print(value)
... 
1
Hi
True
0 голосов
/ 14 мая 2011

Я бы выбрал Стиль 2 , поскольку вы действительно можете понять, что вы повторяете:

>>> # Style 2: Explicit tuple
>>> for i in (x, y, z):
        print(i)

Стиль 1 кажется мне немного смущающим по некоторым причинам.

0 голосов
/ 14 мая 2011

В этом случае явное лучше, чем неявное, кортеж должен быть очевидным.

Я думаю, что есть более крупная рыба, которую нужно жарить :) Кто угодно будет знать, что вы делаете в любом случае,крошечное изменение.

...