Удобочитаемое соглашение для распаковки однозначного кортежа - PullRequest
9 голосов
/ 16 сентября 2010

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

Существует ли какое-либо соглашение для этого, подобное pep8 рекомендациям?Если нет, то какой самый ясный и понятный способ сделать это?

Ниже приведены способы, которые я пробовал, и мои мысли о них.

Два распространенных метода, которые аккуратны, но простыпропустить:

value, = long().chained().expression().that().returns().tuple()

value = long().chained().expression().that().returns().tuple()[0]

Функция будет явной, но нестандартной:

value = unpack_tuple(long().chained().expression().that().returns().tuple())

Может быть, комментирование всегда будет наиболее понятным?

# unpack single-value tuple
value, = long().chained().expression().that().returns().tuple()

1 Ответ

22 голосов
/ 16 сентября 2010

Как насчет использования явных скобок, чтобы указать, что вы распаковываете кортеж?

(value, ) = long().chained().expression().that().returns().tuple()

В конце концов явное лучше, чем неявное .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...