Зачем Python столько знаков подчеркивания? | by Maria Hladka | NOP::Nuances of Programming

Published in

·

8 min read

·

Oct 12, 2021

Знак подчеркивания “_” — не изобретение Python, другие языки программирования также используют символ “_” в своих сценариях; однако в семантике языка Python знак подчеркивания фигурирует особенно часто: первое, с чем сталкивается новичок в изучении объектно-ориентированного программирования на Python — это метод конструктора объекта __init__, у которого в сигнатуре аж четыре подчеркивания!

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

В статье перечислены следующие приёмы разностороннего улучшения кода с помощью символа нижнего подчеркивания “_”:

  1. Создание временных переменных на Python.
  2. Улучшение читаемости кода на Python.
  3. Разрешение конфликта имён в программе на Python.
  4. Создание изолированных (внутренних, инкапсулированных, “приватных”) атрибутов для объектов Python.
  5. Создание защищенных от перезаписи атрибутов для объектов Python.
  6. Переопределение магических методов и специальных атрибутов объектов Python.

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

Последний результат REPL

Аббревиатура REPL расшифровывается как “Read Evaluate Print Loop”, что в переводе означает “Чтение Оценка Печать Цикл”. Запуская что-либо в консоли Python, результат работы программы будет записан в REPL в виде переменной. У этой переменной нет имени, и в качестве идентификатора для неё как раз подойдет один знак нижнего подчеркивания.

Ознакомиться с крайне типичным примером получения сохраненных в REPL результатов выполнения программы можно при использовании среды Jupyter Notebook. Предположим, в первой ячейке вашего блокнота инициирован запуск чего-либо — это значит, что в последующей ячейке доступ к результату выполнения программного кода первой ячейки можно получить с помощью символа нижнего подчеркивания:

Однако следует помнить, что тип данных None не буферизируется, из-за чего значение переменной с идентификатором в виде одного символа нижнего подчеркивания НЕ заменяется на None, оставаясь равным результату вычислений самой первой ячейки, как в примере ниже.

Анонимная переменная

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

for _ in range(10000):
# Сделать что-то 10000 раз
pass

В приведенном выше примере фрагмент кода выполняется 10k раз подряд с помощью цикла for; однако не имеет значение, какая сейчас итерация цикла, а потому в качестве идентификатора для переменной с номером итерации выбран одинарный символ нижнего подчеркивания.

Более того, большинство из популярных интегрированных средств разработки по умолчанию знакомы с “эмпирическим правилом” идентификатора-подчеркивания, поэтому переменная с таким идентификатором не проверяется на предмет использования в остальном коде программы; и наоборот, при назначении переменной в вышеописанном цикле for уникального идентификатора, некоторые инструменты интегрированной среды разработки могут начать выдавать разработчику предупреждение о том, что он случайно “определил переменную без её использования”.

Универсальный заполнитель

Еще одно распространенное использование символа нижнего подчеркивания в качестве идентификатора временной переменной — это создание заполнителя; зачастую такой приём используется для извлечения значений из кортежа, как в примере ниже.

my_tuple = (1, 2)x, _ = my_tuple
print(x)

Как показано на примере, в качестве значения переменной x присваивается значение первого из элементов кортежа. А вот вторая переменная игнорируется, поскольку идентификатор-подчёркивание без лишних слов даёт понять, что она используется в качестве “заполнителя”.

Также следует упомянуть о малоизвестном трюке, который заключается в совместном использовании символа звездочки с идентификатором-подчеркиванием ради создания переменной-“заполнителя” с несколькими значениями. Предположим, что обозначен кортеж с несколькими элементами, задача — получить из него значения первого и последнего элементов:

my_long_tuple = (1, 2, 3, 4, 5)x, *_, z = my_long_tuple
print('x =', x)
print('z =', z)

Теперь не имеет значения, сколько элементов содержится в кортеже — переменные x и z всегда будут ссылаться на значения первого и последнего из них.

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

num = 1_000_000
print(num)

Многие программисты разделяют каждые три цифры числа символом нижнего подчеркивания, чтобы прочитать большое число было легче. Эта странность вызвана тем, что синтаксис Python не позволяет писать большие числа через запятую, зато символ подчеркивания в таком случае разрешен.

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

num = 100_0000
print(num)

Символ нижнего подчеркивания также используется многими разработчиками для избегания появления конфликтов в пространствах имён, при том что на уровне интерпретатора для такого использования подчеркивания нет никакого официального функционала. Таким образом, это еще одно “эмпирическое правило” использования символа нижнего подчеркивания в коде.

Например, необходимо определить функцию получения “класса” (разновидности) некоторых продуктов. Если написать код следующим образом, то будет выброшено исключение SyntaxError:

def print_class(class):
print('Class:', class)

Ошибка возникает из-за того, что идентификатор class является одним из зарезервированных ключевых слов в Python. При его использовании Python автоматически начинает считать, что мы хотим определить класс объектов, но синтаксис для такой операции, очевидно, неверен.

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

def print_class(class_):
print('Class:', class_)print_class('Premium')

Конечно, никто не обязан использовать именно слово “class” в качестве идентификатора для переменной, потому что это просто имя переменной; однако иногда именно такое название существенно улучшает читаемость кода, в таком случае не хочется — и не нужно, как мы узнали только что — избегать использования зарезервированных ключевых слов.

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

Защита от импорта

Например, в файле с расширением .py пределены ряд констант и функций. После сохранения данного файла, любой программист может попробовать импортировать его в качестве модуля в другой файл программы; однако может статься так, что оный Python файл содержит исключительно локальные вспомогательные функции, которые не должны быть импортированы для использования в другой среде.

В таком случае проблему решает добавление знака нижнего подчеркивания перед константами или функциями: теперь они не будут импортироваться при выполнении команды from … import *.

Давайте создадим файл lib.py и внутри него определим следующие две функции:

def test_func():
print("I'm a test")def _test_func():
print("I'm a _test")

Далее, в другом файле, выполним импорт всего содержимого из нашего модуля lib. py:

from lib import *

Теперь легко проверить, что первая test_func() была успешно импортирована, чего нельзя сказать о функции _test_func()!

Однако, пожалуйста, воспринимайте вышеописанный приём как “удобное средство”, предотвращающее импорт ненужных функций. Данный трюк НЕ помешает другому программисту явно импортировать куда угодно всё, что он захочет.

Явный импорт продолжает работать:

from lib import _test_func

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

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

Для примера мы определим класс под названием Person, а затем создадим его экземпляр:

class Person():
def __init__(self, name, age):
self. name = name
self.__age = age
def show(self):
print(f"Меня зовут {self.name} и мне {self.__age} лет")
def __show(self):
print(f"Привет {self.name}, ты меня вызвал!")p1 = Person('Chris', 33)

Таким образом, для вывода на экран заранее заданной строки идеально подойдёт метод show():

Тем не менее, если попытаться получить доступ к значению атрибута __name или вызвать метод __show(), которые “защищены” двойными подчеркиваниями в самом начале их идентификаторов, то произойдёт выброс исключения, и программа прекратит работу.

Опять же, эта “защита” не прописана на уровне интерпретатора, она удобна лишь тогда, когда хочется скрыть от вызова какой-то внутренний функционал класса, потому что всегда можно прибегнуть к явному вызову атрибута или метода: просто добавьте перед ними указание _<имя_класса>:

Про магические методы знает каждый, но данный аспект настолько важен, что его нельзя пропускать так или иначе. Метод-конструктор __init__(), который использовался в одном из первых примеров статьи, как раз таки относится к магическим методам, в документации языка программирования Python называемым “специальные атрибуты”. Кроме метода-конструктора, одним из самых важных магических методов каждого класса можно назвать __repr__(), определяющий, что должно быть выведено при запросе строкового представления объекта. Если вы знакомы с Java, то легко узнаете в методе __repr__() примерный аналог toString().

Для примера определим класс Person и переопределим его метод __repr__(), чтобы настроить вывод на экран при передаче функции print() экземпляра данного класса.

В первом примере метод __repr__() не переопределён, в следствии чего функция print() просто сообщает нам имя класса и его адрес в памяти компьютера, что не очень полезно для отладки:

class Person():
def __init__(self, name, age):
self.name = name
self.age = agep1 = Person('Chris', 33)
print(p1)

Теперь давайте переопределим функцию __repr__() и попробуем снова:

def __repr__(self):
return f"Меня зовут {self. name} и мне {self.age} лет."

В статье представлены несколько приёмов, связанных с использованием символа нижнего подчеркивания в языке программирования Python. Некоторые из них позволяют получить дополнительные возможности в программировании, другие — улучшают читабельность и надежность кода программы. Кроме того, в статье рассмотрены способ защиты от импорта объектов, необходимых только для организации локальной работы одного модуля и способ защиты от перезаписи атрибутов/методов классов.

К вышеописанным советам стоит прислушаться хотя бы потому, что они ускорят ваш процесс понимания кода других Python-программистов.

Жизнь коротка, используйте Python!

Для чего используется символ подчеркивание ( _ ) в Python

Spread the love

Хотя в большинстве языков программирование (конечно, не во всех) символ подчеркивание ( _ ) используется только для задания имен переменных и функций в стиле snake-case, в Python он имеет особое значение. Если вы хорошо знаете python, синтаксис подобный этому for _ in range(10), __init__ (self), должен быть вам хорошо знаком. Если нет, то этот пост подробно расскажет о том, когда и как используется символ подчеркивание ( _ ) в Python.

Существует 5 особых случаев использования символа подчеркивания.

  1. Для хранения значения последнего выражения в интерпретаторе.
  2. Для игнорирования значений. (так называемое “I don’t care” – «мне все равно»)
  3. Для придания особого предназначения методам, функциям и переменным.
  4. Использовать в качестве функций «Интернационализация (i18n)» или «Локализация (l10n)».
  5. Для разделения цифр в больших числах.

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

При использовании в интерпретаторе

Интерпретатор python сохраняет последнее значение выражения в специальной переменной, называемой ‘_‘. Эта функция была впервые использована в стандартном интерпретаторе CPython, и теперь присутствует и в других интерпретаторах Python.

>>> 10 
10 
>>> _ 
10 
>>> _ * 3 
30 
>>> _ * 20 
600

Для игнорирования значений

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

# Игнорирование значение при распаковке
x, _, y = (1, 2, 3) # x = 1, y = 3 
# Игнорирование несколько значений. 
# Это называется «Расширенная распаковка», 
# которая доступна только в Python 3.x
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5  
# Игнорирование индекса
for _ in range(10):     
    do_something()  
# Игнорировать значение определенного местоположения
for _, val in list_of_tuple:
    do_something()

Придание особого предназначения методам, функциям и переменным.

Подчеркивание наиболее часто используется в «наименовании» методов, функции и переменных. В PEP8, который является руководящим сборником всех соглашений в Python, описано следующие 4 случая использование подчеркивания в именовании.

_single_leading_underscore

Один символ подчеркивания в начале имени. Это соглашение используется для объявления приватных переменных, функций, методов и классов в модуле. Все, что именовано согласно этому соглашению игнорируется в импорте по команде from module import *. Однако, нужно помнить что конечно же, Python не поддерживает по-настоящему приватный доступ, поэтому мы не можем принудительно установить что-то частное, а всегда все можем вызывать напрямую.

_internal_name = 'one_nodule' # приватная переменная
_internal_version = '1. 0' # приватная переменная
class _Base: # private class
    _hidden_factor = 2 # приватная переменная
    def __init__(self, price):
        self._price = price
    def _double_price(self): # приватная метод
        return self._price * self._hidden_factor
    def get_double_price(self):
        return self._double_price() 

single_trailing_underscore_

Один символ подчеркивания в конце имени. Это соглашение может использоваться для предотвращения конфликта с встроенными именами переменных и функций в Python.

Tkinter.Toplevel(master, class_='ClassName') # Предотвращаем конфликт с ключевым словом 'class'
list_ = List.objects.get(1) # Предотвращаем конфликт с ключевым словом 'list'

__double_leading_underscore

Двойной символ подчеркивания в начале имени. Это скорее вопрос синтаксиса, чем соглашения. Двойное подчеркивание меняет имена атрибутов класса, чтобы избежать конфликтов имен атрибутов между классами. (так называемое «изменение» означает, что компилятор или интерпретатор изменяет имена переменных или функций с помощью некоторых правил, а не используют их как есть)
Правило изменения в Python заключается в добавлении к имени класса «ClassName» имени атрибута, объявленных с двойным подчеркиванием. То есть, если вы напишите метод с именем «

__method» в классе, имя будет изменено на «_ClassName__method». См пример ниже.

class A:
    def _single_method(self):
        pass
    def __double_method(self): # for mangling
        pass
class B(A):
    def __double_method(self): # for mangling
        pass

Поскольку атрибуты, названные c двойным подчеркиванием в начале, будут изменены, как описано выше, мы не можем получить к ним доступ к ним напрямую с помощью «ClassName .

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

Еще один пример:

>>> class MyClass():
...     def __init__(self):
...             self.__superprivate = "Hello"
...             self._semiprivate = ", world!"
...
>>> mc = MyClass()
>>> print mc.__superprivate
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: myClass instance has no attribute '__superprivate'
>>> print mc._semiprivate
, world!
>>> print mc.__dict__
{'_MyClass__superprivate': 'Hello', '_semiprivate': ', world!'}

__double_leading_and_trailing_underscore__

Двойное подчеркивание в начале и в конце имени. Это соглашение используется для создания специальных переменных или методов (так называемый «магические методы»), таких как __init__, __len__. Эти методы предоставляют специальные синтаксические функции или делают специальные вещи (например осуществляют протокол дескриптеров). Например,

__file__ указывает местоположение файла Python, __eq__ выполняется, когда выполняется выражение a == b.
Пользователь, конечно, может создать свой собственный специальный метод, но в это очень редко возникает реальная потребность. Обычно может возникнуть необходимость в изменение некоторых встроенных специальных методов. (Например, очень часто вам будет нужно инициализировать свой класс с помощью __init__, который выполняется при создании экземпляра класса.)

class A: def __init__(self, a): # использование специального метода '__init__' self. a = a def __custom__(self): # пользовательский специальный метод. pass

Использование в качестве функций «Интернационализация (

i18n)» или «Локализация (l10n

Это просто соглашение, и оно не имеет никаких синтаксических особенностей. Таким образом, подчеркивание не означает что это обязательно функции i18n/l10n, и это просто соглашение, которое связывает библиотеки i18n/l10n с переменной подчеркивания, взятой из соглашения в языке C. Встроенная библиотека

gettext, предназначенная для i18n/l10n, использует это соглашение. Так же Django поддерживает i18n/l10n, и то же использует это соглашение.

# официальная документация : https://docs. python.org/3/library/gettext.html
import gettext
gettext.bindtextdomain('myapplication','/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print(_('This is a translatable string.'))

Для отделения цифр друг от друга

Эта функция была добавлена в Python 3.6. Она используется для разделения цифр больших чисел для удобства чтения.

dec_base = 1_000_000
bin_base = 0b_1111_0000
hex_base = 0x_1234_abcd
print(dec_base) # 1000000
print(bin_base) # 240
print(hex_base) # 305441741

Заключение

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

Оригинал: Understanding the underscore( _ ) of Python

Была ли вам полезна эта статья?

[12 / 4.8]


Spread the love

Underscores создает музыку о беспокойстве быть живым

Культура

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

Спенсер Корнхабер

Дэн Франко

Сохраненные истории

Очевидно, одна из самых захватывающих историй в музыке в этом году — это отсутствие волнения по поводу музыки. В январе на вопрос «Убивает ли старая музыка новую музыку?» стал вирусным, когда информационный бюллетень историка джаза Теда Джойи (переизданный The Atlantic ) приводит данные, показывающие, что с 2020 по 2021 год количество слушателей недавно выпущенных песен — по сравнению с прослушиванием старых песен — уменьшилось. Джойя утверждал, что музыкальная индустрия «потеряла доверие» к новому, и поделился анекдотами, предполагающими, что современные дети странным образом очарованы хитами прошлых поколений. Многие люди, которые поделились его постом в социальных сетях, использовали его как возможность заявить, что слушатели застряли в ретро-колеи, что сегодняшняя музыка плоха, а интернет убил само понятие новизны.

В разговоре обычно умалчивали о том, что потоковая передача позволяет нам количественно оценить то, что всегда происходило: люди слушают свои любимые песни, независимо от того, когда они были выпущены, снова и снова. Но теория о том, что старое убивает новое, явно сейчас пользуется широкой популярностью. Когда мы вступаем в третий год пандемии, кажется, что течение времени прервано. Спустя более десяти лет после начала эры Spotify культура раскололась таким образом, что стало труднее говорить о последних горячих вещах. Бесконечные интернет-архивы поставили прошлое в прямую конкуренцию с настоящим. Рекорд-лейблы, как заметил Джойя, перестраиваются в соответствии с этой реальностью. Наша культура? Наши художники? Когда прошлое бесконечно доступно, влияет ли оно на то, как звучит будущее?

В то время как социальные сети задавали эти вопросы, я был глубоко одержим новым музыкантом: подчеркивания, имя записи 21-летнего Девона Карпфа, который делает интеллектуальную, наполненную гитарой электронную поп-музыку о тревоге быть живым. На данный момент их основные претензии на известность — это разогрев гиперпоп-дуэта 100 Gecs и работа с Трэвисом Баркером из Blink-182. Но дебютный альбом Карпфа 2021 года, fishmonger , звучит как искусно спродюсированная группа с контрактом на запись, а не, как на самом деле, неподписанный дилетант SoundCloud, который застрял в доме своих родителей из-за COVID-19.. Глюки в музыке, хип-хоп бэкбиты, искаженный вокал и эмо-мелодии кажутся очень похожими на , а теперь на , но в то же время они пронизаны ностальгией по поп-панку 2000-х, альтернативному року 90-х и, что самое удивительное, далеко не крутыми пробными камнями миллениалов. такие как MGMT и Cobra Starship. Когда я впервые услышал этот альбом, я не мог понять, был ли он так очаровал меня, потому что он был мне знаком, или потому, что это было не так.

Торговец рыбой остался на связи для меня, а затем подчеркивание выпустило следующий EP, Boneyard aka Fearmonger , так даже лучше. Новые песни варьировались от акустических баллад до безумных EDM, с насмешливыми клавишными и хрупкими, надутыми мелодиями. Вокал, казалось, скользил между идентичностями — вы чувствуете, что слушаете мультяшную пикси в одном куплете, татуированного панка в следующем — при этом произнося таинственную, вызывающую воспоминания лирику. Чем больше я слушал, тем больше убеждался в том, что онлайн-заламывание рук старых и новых было связано с экономическими структурами, а не с эстетическими устремлениями поколений. Теперь, как всегда раньше, молодые люди будут продолжать использовать прошлое, чтобы двигаться вперед.

Когда я разговаривал с Карпфом по телефону в январе, они показались мне умными, самостоятельными и очень влюбленными в музыку. В детстве в Сан-Франциско они начали с того, что использовали компьютер своего отца для записи компакт-дисков с петлями своих битов. В старшей школе Карпф стал фанатом джаз-бэнда со склонностью к теории музыки. Но самое большое влияние на них оказали сцены, которые они нашли в Интернете, особенно дабстеп, поджанр танцевальной музыки, получивший распространение в начале 2010-х. «Skrillex породил целую легион детей, которым было 10 лет, когда вышли «Scary Monsters», и которые поняли, что это то, чем они хотели бы заниматься до конца своей жизни», — сказал Карпф, имея в виду знаменитого диджея с короткой стрижкой и его Песня 2010 года и EP под названием Страшные монстры и милые духи .

Дабстеп, который дополняет ритмы регги трепетом баса, приобрел стереотип брутальности, когда такие исполнители, как Skrillex и Diplo, приобрели известность. Но для Карпфа дабстеп был «дерьмом из ракетостроения», предполагающим бесконечные возможности электронного производства. «Это экспериментальный метод создания музыки, которого нет ни в одной другой музыке», — сказали они. «Структура совсем не меняется, но места, где вы экспериментируете, где вас уважают, — это звуковой дизайн». Карпф упомянул фирменный «рычащий» шум Skrillex, который другие артисты изо всех сил пытались точно воспроизвести. «Идея существования уравнения, которое не было решено никем более 10 лет, очень меня завораживает», — сказали они.

Недавняя музыка Underscores лишь иногда звучит как дабстеп. Но это действительно отражает чувствительность человека, который провел бесчисленное количество часов, играя с аудиопрограммами и обмениваясь ссылками на потоковую передачу. В прямых трансляциях Twitch для фанатов Карпф разбирает слои звуков, сэмплов и эффектов своих песен. Отсылок предостаточно: они рассказывают о басовой партии, напоминающей Rage Against the Machine, или о том, как группы эпохи MySpace вдохновили их на написание песни в определенной тональности. Такая привередливая, игривая постановка имеет решающее значение для свежести музыки. Один выдающийся трек, «Tongue in Cheek», заставляет поп-панк-тропы казаться новыми отчасти благодаря тому, как инструменты двигаются в миксе. Риффы подобны подводной лодке: она движется под безмятежной поверхностью, а затем разрушает ее.

Вокал тоже новаторский. Следуя образцу самых важных поп-музыкантов 21-го века, Карпф использует технологии, чтобы петь за физическими пределами человеческого голоса. То, как Лаура Лес из 100 Gecs, транс-женщина, «манипулировала своим голосом, чтобы он звучал более аутентично», придало Карпфу уверенности в том, что он вообще может использовать свой собственный вокал, сказал мне Карпф. В целом, рост известности Gecs за последние несколько лет активизировал онлайн-сцену молодых поп-мастеров, частью которой является сам подчеркивающий. Gecs «заставил всех нас осознать, что все эти звуки, которые мы будем издавать, потому что решили, что это повредит нашим шансам зарабатывать на жизнь — люди хотят это слышать», — сказал Карпф. «Люди хотят слышать искаженный материал. Они хотят слышать что-то смешное».

Результатом этих прозрений является музыка, небинарная как по форме, так и по содержанию. («Вы видите, что натуралы делают гиперпоп, и это типа: Эй, что происходит? », — сказал Карпф со смехом). Невероятная песня Underscores «Girls and Boys», кажется, мрачно переворачивает перспективу целого ряда вуайеристских песен о сексуальных меньшинствах — вспомните «Girls & Boys» Blur или «Somebody Told Me» группы The Killers («Почему я ложусь в постель с людей, которые могли меня убить?» — говорится в одной строке). Другие треки анализируют преклонение перед славой, подразумевая, что для некоторых детей — не только гомосексуалистов, но и цветных детей (мама Карпфа — филиппинка, а их отец — белый) — стремление к образцам для подражания вовсе не легкомысленно. «Язык в щеку» отдает дань уважения неназванной знаменитости, на которой, по словам Карпфа, они основывали «всю свою личность», когда были моложе; на Discord фанаты underscores пытались угадать, кто эта знаменитость.

Квир-эмо-дабстеп может звучать как пародия на то, какой может быть новая волна будущего, а сильно референциальные песни о подражании другим людям могут казаться подкрепляющими аргументы в пользу того, что наша культура застряла на месте. Но опять же, Курт Кобейн боготворил Джона Леннона, Бейонсе черпала вдохновение у Тины Тернер, а Скриллекс был одержим Aphex Twin. Инновации всегда происходили за счет творческого использования знакомых ингредиентов, использования новых технологий и выражения ранее подавляемых точек зрения. Хотя развлекательный бизнес вполне может реструктурироваться, чтобы премировать известные бренды за счет выскочек, сообщества все еще формируются вокруг новых артистов.

В прошлом месяце Underscores отыграли свое первое выступление в качестве хедлайнеров в маленьком клубе в Бруклине. Толпа состояла из молодых людей с кошачьими ушами и прозрачными рюкзаками, которые тряслись и подпевали каждому слову тонкого каталога песен. В какой-то момент во время аншлагового концерта Карпф исполнил кавер на песню No Doubt «Hella Good», пульсирующий, все еще кажущийся футуристическим хит 2001 года, о котором я много лет не думал активно. Прилив ностальгии во мне разбился о трепет дезориентации в настоящем. Карпф сказал мне, что однажды они захотят отправиться в тур с группой инструменталистов, но большую часть вечера они были единственными людьми на сцене, прыгающими и подпевающими под фонограмму. Пустота вокруг них казалась драгоценной вещью, неизведанным пространством.

Подчеркивание Определение и значение | Dictionary.

com
  • Игры
  • Рекомендуемые
  • Поп-культура
  • Советы по написанию

[ глагол uhn-der-skawr, -skohr, uhn-der-skawr , -скор; существительное uhn-der-skawr, -skohr]

См. синонимы для: underscoreunderscoredunderscores на Thesaurus.com


глагол (используется с дополнением), underscore, underscore.ing.

  1. для маркировки линией или линиями внизу; подчеркивание, как для ударения.

  2. для стресса; подчеркнем: Недавняя трагедия подчеркивает опасность пренебрежения правилами безопасности.

существительное

  1. линия, проведенная под чем-то написанным или напечатанным.

  2. музыка для саундтрека к фильму; фон для фильма или постановки.

Происхождение подчеркивания

1

Впервые записано в 1765–1775 гг. ; недо- + оценка

Dictionary.com Unabridged На основе Random House Unabridged Dictionary, © Random House, Inc., 2023 г.

Как использовать подчеркивание в предложении

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

    Почему одинокие должны сказать «Я не хочу» движению за брак с собой | Тим Тиман | 30 декабря 2014 г. | THE DAILY BEAST

  • Нападение на съемочную группу BBC TV подчеркивает угрозу, с которой сталкиваются все журналисты.

    Нападения на журналистов в России остаются безнаказанными | Анна Немцова | 18 сентября 2014 г. | ЕЖЕДНЕВНЫЙ ЗВЕРЬ

  • Но это только подчеркивает несправедливость приговора.

    Домашний арест за супружеское изнасилование, вы шутите?! | Салли Кон | 21 мая 2014 г. | THE DAYLY BEAST

  • Этот пункт подчеркивает, насколько 2016 год нависает над всем, что обсуждается в этой статье.

    Вот что происходит, когда Республиканская партия захватывает Сенат | Майкл Томаски | 30 апреля 2014 г. | The Daily Beast

  • Токвиль подчеркивает: «Несколько богатых граждан демократического государства не составляют исключения из этого правила».

    Что поставлено на карту в дебатах Токвиля и Пикетти | Джеймс Поулос | 27 апреля 2014 г. | THE DAILY BEAST

  • В выпуске 11 символы подчеркивания используются для обозначения слов и фраз, выделенных курсивом для выделения.

    По эту сторону рая | Ф. Скотт Фицджеральд

  • Эта последняя тема с мотивом Судьбы подчеркивает более ранние части диалога между Голо и Мелизандой.

    «Пеллас и Млизанда» Дебюсси | Лоуренс Гилман

  • Когда редактор подчёркивает слово, китайский наборщик взимает дополнительную плату в размере 9 долларов за выделение его курсивом.

    Примечания | Билл Най

  • Продолжение подчеркивания указывает на преднамеренные пробелы в предложении.

    И.В.В. | Пол Фредерик Бриссенден

  • Единственная в буйной мешанине этих листов не было ни подчеркиваний, ни восклицательных знаков.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *