Подтвердить что ты не робот

Python - есть ли символ "не волнует" для присвоений кортежей?

Учитывая строку "VAR = значение", я хочу разбить ее (только) на знаке first '=' (< значение > может содержать больше знаков "=" ), что-то вроде этого

var, sep, value = "VAR=value".partition('=')

Есть ли способ НЕ объявить переменную 'sep'? Подобно этому (только что составленному синтаксису):

var, -, value = "VAR=value".partition('=')

Просто для полноты, я нацелен на Python v 2.6

4b9b3361

Ответ 1

_ действительно очень популярный выбор для "имени, которое не имеет значения" - это юридическое имя, визуально ненавязчивое и т.д. Однако иногда эти качества могут помешать вам. Например, модуль GNU gettext для I18N и L10N, который является частью стандартной библиотеки Python, идиоматически использует _ очень по-другому, с идиомы, такие как...:

_ = gettext.gettext
# ...
print _('This is a translatable string.')

чтобы отметить и перевести все текстовые сообщения в коде (также используя относительную визуальную ненавязчивость _('...'). Очевидно, что любой код, использующий этот модуль и идиому, также не должен использовать _ для обозначения чего-то совершенно другого ( "a do not care name" ).

Таким образом, второй полезной альтернативой может быть присвоение имени unused, чтобы указать такие ситуации "не заботьтесь" визуально более явным образом. Google руководство по стилю python рекомендует использовать либо _, либо префикс unused_ - последний может быть немного подробным, но, как правило, очень ясно, например:

name, unused_surname, salutation = person_data
print "Hello, %s %s!" % (salutation, name)

делает кристально чистым, что person_data представляет собой последовательность из трех элементов (возможно, кортеж), а элемент, который вы пропускаете (и не используете вообще), является фамилией (потому что вы хотите напечатать дружественное сообщение типа "Привет, мистер Алекс!" Или "Привет, мисс Пигги!";-). (pylint и аналогичные инструменты могут вас предупредить, если у вас есть неиспользуемые переменные с именем, отличным от _ или unused_..., и, конечно же, также предупреждайте вас, если вы когда-либо используете переменную с именем unused_something! -).

Ответ 2

Почти там:

var, _, value = "VAR=value".partition('=')

_ обычно считается переменной, не требующей ухода.

Ответ 3

Для этого нет никакого официального языка; вы можете просто использовать любую отбрасываемую переменную. Что касается стандартов, я видел, как подчеркивания, используемые иногда на Python и других языках. Единственная проблема заключается в том, что подчеркивание используется как псевдоним для gettext при локализации. Но если вы не выполняете локализацию или не используете глобальную привязку для нее, то подчеркивание должно работать нормально.

Ответ 4

Действительно странный вопрос, потому что вы можете сделать только:

var, _, value = s.partition(sep)

и не заботится о переменной _, но _ - это просто имя sep, как var или value. Кстати, используйте str.split

>>> var, value = "VAR=value".split('=')
>>> var, value
('VAR', 'value')
>>> 

Ответ 5

Почему бы вам не использовать 'VAR=value'.split('=')? Это игнорирует разделитель.

РЕДАКТИРОВАТЬ (для примера Cristi в комментарии):

От Дайвинг в Python:

Совет: anystring.split(разделитель, 1) является полезную технику, когда вы хотите поиск строки для подстроки и то работайте со всем до подстрока (которая заканчивается в первой элемент возвращаемого списка) и все после него (что заканчивается второй элемент).

Ответ 6

  • Python не имеет синтаксиса, чтобы избежать назначения при распаковке и т.д.

  • Как уже упоминалось, существует соглашение об использовании _ для переменных, которые вам не нужны. Это довольно широко используется и понимается, но лично я думаю, что он недоиспользуется. Если вы скажете var, _, value = "VAR=value".partition('='), вы должны знать, что происходит, чтобы знать, что такое _, и почему вы не заботились об этом, когда читаете код. Если вы скажете var, sep, value, вы документируете одновременно. Это не очень важно для str.partition, но я видел _, _, name, _, city, _ = some_weird_function() раньше и нашел его менее полезным, чем если бы все было распаковано на полезные имена.

  • Вы можете технически использовать str.split здесь, если хотите. var, value = "foo=bar=baz".split("=", 1).

Ответ 7

_ обычно используется как имя для вас dont care * Например, в кортеже, содержащем имя, фамилию и псевдоним в тот момент, когда нас интересуют только имя и фамилия, может использовать _, чтобы указать, что имя не важно на данный момент:

data = ('John', 'Mate', 'Little John')
name, surname, _ = data

Ответ 8

Как говорили другие, подчеркивание (_) является стандартом. Но если подчеркивание используется для переводов, я думаю, что двойной символ подчеркивания - лучшая альтернатива.

var, __, value = "VAR=value".partition('=')

Лучше, чем эти:

var, unused, value = "VAR=value".partition('=')

var, unused_del, value = "VAR=value".partition('=')

var, _del, value = "VAR=value".partition('=')

Ответ 9

Существует также возможность использования индексов:

a, b = my_list[0, 2]