Значения Python по умолчанию и установка значения на основе других переменных.Чтобы, если еще или нет. - PullRequest
3 голосов
/ 04 января 2012

Иногда у меня есть переменная, которую я хочу присвоить чему-то по умолчанию, и если что-то еще установлено, замените ее на что-то другое.

Вопрос в том. Что является предпочтительным? Задать значение по умолчанию и затем изменить его, если условие выполнено, или задать условие только один раз, в зависимости от первоначальной проверки с добавлением еще?

Пример в коде.

if x:
    y = '%s-other' % x
else:
    y = 'some_default'

Другой вариант будет.

y = 'some_default'
if x:
    y = '%s-other' % x

Это не всегда аргумент, передаваемый функции, поэтому я не хочу полагаться на kwargs.

Лично мне кажется, что второй вариант гораздо более понятен, но я пока не нашел какого-либо мнения по этому поводу.

Ответы [ 3 ]

6 голосов
/ 04 января 2012

Как насчет этого:

y = '%s-other' % x if x else 'some_default'
3 голосов
/ 04 января 2012

Как указал Роб,

y = '%s-other' % x if x else 'some_default'

- очень распространенная конструкция для разных языков

Python предоставляет еще несколько альтернатив, и выбор зависит от пользователя

y = ['some_default','%s-other'][x!=None]

Если вы имеете дело со словарем, у него уже есть два варианта

  1. Использовать setdefault, как x.setdefault(some_key,some_default)=other
  2. Использовать collection.defaultdict

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

Для меня, пока программа удобочитаема и эффективна, мы не должны слишком увязать, чтобы создать какой-то конструктивный питон, который часто отклоняет фокус.

0 голосов
/ 05 января 2012

Больше сахара на другие ответы:

y = x and '%s-other' % x or 'some_default'

Но этот может напугать людей, поэтому я рекомендую использовать Роба :))

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