5 способов использования подчеркивания (_) в Python
Подчеркиванию (_) в Python отводится особенное место. Если в большинстве других языков оно используется в названиях переменных и функций, то в Python подчеркивание (_) обладает гораздо большей властью. Например, если вы программировали на Python, то вам должен быть знаком следующий синтаксис: for _ in range(10) или __init__(self).
В этой статье мы рассмотрим 5 способов использования (_) в Python:
- Хранение значения последнего выражения в интерпретаторе.
- Игнорирование некоторых значений.
- Задание специальных значений переменным или функциям.
- Использование функций «Internationalization(i18n)» и «Localization(l10n)».
- Отделение цифр числа друг от друга.
Пройдемся по каждому случаю отдельно.
Хранение значения последнего выражения в интерпретаторе
Интерпретатор Python хранит значение последнего выражения в специальной переменной «_».
Эта возможность сначала использовалась в стандартном CPython-интерпретаторе, но теперь она доступна и в других интерпретаторах.
>>> 10 10 >>> _ 10 >>> _ * 3 30 >>> _ * 20 600
Игнорирование некоторых значений
Подчеркивание (_) также используется для игнорирования ненужных вам значений.
# Ignore a value when unpacking
x, _, y = (1, 2, 3) # x = 1, y = 3
# Ignore the multiple values. It is called "Extended Unpacking" which is available in only Python 3.x
x, *_, y = (1, 2, 3, 4, 5) # x = 1, y = 5
# Ignore the index
for _ in range(10):
do_something()
# Ignore a value of specific location
for _, val in list_of_tuple:
do_something()Задание специальных значений для имен переменных или функций
PEP8, руководство по написанию кода на Python, выделяет 4 способа задания имен.
_single_leading_underscore
Таким способом задаются частные переменные, функции, методы и классы в модуле.
from module import *._internal_name = 'one_nodule' # private variable
_internal_version = '1.0' # private variable
class _Base: # private class
_hidden_factor = 2 # private variable
def __init__(self, price):
self._price = price
def _double_price(self): # private method
return self._price * self._hidden_factor
def get_double_price(self):
return self._double_price()single_trailing_underscore_
Такой метод задания имен используется для избежания конфликтов со встроенными именами или классами.
Tkinter.Toplevel(master, class_='ClassName') # Avoid conflict with 'class' keyword list_ = List.objects.get(1) # Avoid conflict with 'list' built-in type
__double_leading_underscore
Двойное подчеркивание (__) используется для искажения имен атрибутов в классе. Если мы создадим метод с именем «__method» в классе с именем «ClassName», то вызвать этот метод так: «ClassName.
__method» — у нас уже не получится. Для дополнительной информации вы можете прочитать о способах задания имен в Python.
class A:
def _single_method(self):
pass
def __double_method(self): # for mangling
pass
class B(A):
def __double_method(self): # for mangling
pass__double_leading_and_trailing_underscore__
Такой способ именования используется для специальных переменных или функций, таких как __init__ или __len__.
class A:
def __init__(self, a): # use special method '__init__' for initializing
self.a = a
def __custom__(self): # custom special method. you might almost do not use it
passИспользование функций «Internationalization(i18n)» и «Localization(l10n)»
# see official docs : 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
Перевод статьи «Understanding the underscore( _ ) of Python»
Реклама на Tproger: найдем для вас разработчиков нужного стека и уровня.
ПодробнееРеклама на tproger.ru
Загрузка
Соглашение по именованию / Методология / БЭМ
Имя БЭМ-сущности уникально. Во всех технологиях (CSS, JavaScript, HTML) одна и та же БЭМ-сущность всегда называется одинаково. Основная идея соглашения по именованию — вложить смысл в имена и сделать их максимально информативными для разработчика.
Можно сравнить одно и тоже имя CSS-селектора, написанное разными способами:
menuitemvisiblemenu-item-visiblemenuItemVisible
Чтобы понять смысл первого имени, нужно вчитаться в каждое слово.
В последних двух примерах имя явно разделяется на логические части. Но ни одно из имен пока не помогает точно определить, что menu — это блок, item — элемент, а visible — модификатор. Чтобы имена сущностей были однозначными и понятными, в БЭМ были разработаны правила формирования имен БЭМ-сущностей.
Правила формирования имен
block-name__elem-name_mod-name_mod-val
Имена записываются латиницей в нижнем регистре.
Для разделения слов в именах используется дефис (
-).Имя блока задает пространство имен для его элементов и модификаторов.
Имя элемента отделяется от имени блока двумя подчеркиваниями (
__).Имя модификатора отделяется от имени блока или элемента одним подчеркиванием (
_).Значение модификатора отделяется от имени модификатора одним подчеркиванием (
_).Значение булевых модификаторов в имени не указывается.

Важно! В методологии БЭМ не существует элементов элементов. Правила именования запрещают создавать элементы элементов, но в DOM-дереве элементы можно вкладывать друг в друга.
Примеры
В HTML БЭМ-сущности представлены атрибутом class. В БЭМ во всех технологиях происходит обращение к классу:
CSS
JavaScript
шаблоны
Примеры правил формирования имен приведены на CSS.
Имя блока
menu
Почему префиксы в именах блока не нужны?
HTML
<div>...</div>
CSS
.menu { color: red; }
Имя элемента
menu__item
Важно! Имена одинаковых элементов одного и того же блока совпадают. Например, все пункты в блоке меню называются
menu__item.
HTML
<div> ... <span></span> </div>
CSS
.menu__item { color: red; }
Имя модификатора блока
menu_hidden
menu_theme_islandsHTML
<div>...</div> <div>...</div>
CSS
.menu_hidden { display: none; }
.menu_theme_islands { color: green; }
Имя модификатора элемента
menu__item_visible
menu__item_type_radioHTML
<div> ... <span>...</span> </div>
CSS
.menu__item_visible {}
.menu__item_type_radio { color: blue; }
Альтернативные схемы именования
Описанные выше правила формирования имен — это классическая схема именования БЭМ-сущностей. Все инструменты БЭМ по умолчанию настроены на классическую схему.
Существуют альтернативные схемы именования, которые активно используются в БЭМ-сообществе. Чтобы во всех технологиях применять одинаковые имена, созданные по альтернативным схемам, используйте инструмент bem-naming.
По умолчанию bem-naming содержит настройки соглашения по именованию, предложенного методологией, но позволяет добавлять правила для применения альтернативных схем.
Стиль Two Dashes
block-name__elem-name--mod-name--mod-val
Имена записываются латиницей в нижнем регистре.
Для разделения слов в именах БЭМ-сущностей используется дефис (
-).Имя элемента отделяется от имени блока двумя подчеркиваниями (
__).Булевые модификаторы отделяются от имения блока или элемента двумя дефисами (
--).Значение модификатора отделяется от его имени двумя дефисами (
--).
Важно! Двойной дефис внутри комментария (
--) может вызвать ошибки при валидации HTML-документа.
Стиль CamelCase
blockName__elemName_modName_modVal
Имена записываются латиницей.

Каждое слово внутри имени пишется с заглавной буквы.
Разделители элементов и модификаторов совпадают с классической схемой.
Стиль React
BlockName-ElemName_modName_modVal
Имена записываются латиницей.
Имена блоков и элементов пишутся с заглавной буквы. Имена модификаторов — со строчной.
Каждое слово внутри имени пишется с заглавной буквы.
Имя элемента отделяется от имени блока одним дефисом (
-).Разделители имени и значения модификаторов совпадают с классической схемой.
Стиль No-namespace
_available
Имена записываются латиницей.
Имя блока или элемента перед модификатором не указывается.
Такая схема именования ограничивает использование миксов, так как не дает возможности определить, к какому блоку или элементу относится модификатор.
Ваша схема именования
Можно создать собственную схему именования БЭМ-сущностей.
Важно, чтобы разделители в новой схеме давали возможность на программном уровне отделять блоки от элементов и модификаторов.
html — Тег двойного подчеркивания?
спросил
Изменено 3 года, 8 месяцев назад
Просмотрено 66 тысяч раз
Я хочу сделать текст в HTML двойным подчеркиванием.
веб-сайт
У меня две линии внизу вместо одной. Есть ли для этого определенный тег или мне нужно сделать это в css?
- HTML
- CSS
Вы можете попробовать добавить это:
h2.dblUnderlined { border-bottom: 3px double; }
Примечание. Ширина должна быть или больше, поскольку она представляет общую ширину; не ширина каждой границы.
По мере увеличения размера ширина линий и пробелов может совпадать или не совпадать в зависимости от кратности определенного измерения на 3. Остаток от 1 и 1 добавляется к ширине пробела; остаток 2 приведет к добавлению 1 к каждой строке.
Используйте границу и и подчеркните:
.doubleUnderline {
украшение текста: подчеркивание;
нижняя граница: 1px сплошная #000;
}
Тест
Вот рабочая скрипка.
4 Самый простой способ — установить нижнюю границу типа double в CSS. Ширина должна быть не менее 3 пикселей, чтобы создать минимальную двойную границу (две границы шириной 1 пиксель с промежутком в 1 пиксель между ними).
Детали зависят от разметки, желаемой ширины и цвета двойной линии, а также от того, должна ли она проходить по доступной ширине. Разметка типа веб-сайт , вероятно, не является серьезной.
С простой разметкой способ получить минимальную двойную рамку на странице — использоватьfoobar
h2 {
нижняя граница: двойная 3px;
}
Если вы хотите, чтобы только текст заголовка был «подчеркнут», самый простой способ — использовать внутреннюю разметку, например foobar и код CSS
h2 span {
нижняя граница: двойная 3px;
}
1парни/девушки, это тоже работает, но больше похоже на традиционное двойное подчеркивание.
.doubleUnderline {
строка оформления текста: подчеркивание;
стиль оформления текста: двойной;
}
2FYI, на данный момент возможно следующее в Firefox или в Safari с использованием префикса поставщика:
text-decoration: двойное подчеркивание; -webkit-text-decoration: двойное подчеркивание;
См. строку оформления текста.
Почему бы просто не сделать свой собственный тег?
<стиль>
дю
{
строка оформления текста: подчеркивание;
стиль оформления текста: двойной;
}
стиль>
Я хочу, чтобы этот материал был подчеркнут дважды.
http://jsfiddle.net/eoba541g/2/
используйте следующий http://jsfiddle.net/cKNP4/
или
Присвойте любому HTML-контейнеру следующий стиль :
стиль верхней границы: нет; стиль правой границы: нет; стиль нижней границы: двойной; стиль левой границы: нет; ширина границы: сплошной черный цвет 2 пикселя;
Вот мое решение (стилус):
$borderWidth 1px
$textЦвет черный
$двойные границы
&:после
содержание ""
абсолютная позиция
топ 100%
ширина 5,7 см
справа 0
верхняя граница ($borderWidth * 3) двойной $textColour
.двойное подчеркивание
@extend $двойные границы
Обратите внимание, что ширина должна быть жестко закодирована (в данном случае 5.7em . Если это не желаемый результат, вы также можете использовать метод border-bottom , упомянутый выше.
О нас
Это будет работать, только если вы хотите дважды подчеркнуть его в HTML.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
css — Как я могу дважды подчеркнуть текст внутри ячейки таблицы html?
спросил
Изменено 4 года, 7 месяцев назад
Просмотрено 9к раз
Оба подчеркивания должны иметь длину, соответствующую содержимому текста.
Я столкнулся с другим подобным вопросом, где принятым решением было использование
.doubleUnderline {
украшение текста: подчеркивание;
нижняя граница: 1px сплошная #000;
}
Но это не то, чего я хотел. Я хочу, чтобы длина двойного подчеркивания была равна длине текстового содержимого.
- HTML
- CSS
- HTML-таблица
Я взбил два примера.
С блочными элементами (например, p ) вы можете использовать встроенный блок , чтобы он не занимал всю длину страницы, а только текст.
диапазон{
нижняя граница: 1px сплошная # 000;
украшение текста: подчеркивание;
}
п{
нижняя граница: 1px сплошная # 000;
украшение текста: подчеркивание;
дисплей: встроенный блок;
} Это вам текст
Это тоже текст для вас
Попробуйте это:
<диапазон> Общий итог: ###,###,###.00
надеюсь, это сработает для вас 🙂
PS: если вам нужно настроить ширину, используйте не менее 3px.
в противном случае он не будет отображаться как двойное подчеркивание
Предлагается text-decoration-style Правило в CSS3 со значением double, но оно еще не поддерживается в браузерах.
.пример {
строка оформления текста: подчеркивание;
стиль оформления текста: двойной;
} Вот как это выглядит
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

