Содержание

5 способов использования подчеркивания (_) в Python

Подчеркиванию (_) в Python отводится особенное место. Если в большинстве других языков оно используется в названиях переменных и функций, то в Python подчеркивание (_) обладает гораздо большей властью. Например, если вы программировали на Python, то вам должен быть знаком следующий синтаксис: for _ in range(10) или __init__(self).

В этой статье мы рассмотрим 5 способов использования (_) в Python:

  1. Хранение значения последнего выражения в интерпретаторе.
  2. Игнорирование некоторых значений.
  3. Задание специальных значений переменным или функциям.
  4. Использование функций «Internationalization(i18n)» и «Localization(l10n)».
  5. Отделение цифр числа друг от друга.

Пройдемся по каждому случаю отдельно.

Хранение значения последнего выражения в интерпретаторе

Интерпретатор 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-селектора, написанное разными способами:

  • menuitemvisible

  • menu-item-visible

  • menuItemVisible

Чтобы понять смысл первого имени, нужно вчитаться в каждое слово. В последних двух примерах имя явно разделяется на логические части. Но ни одно из имен пока не помогает точно определить, что 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_islands

HTML

<div>...</div>
<div>...</div>

CSS

.menu_hidden { display: none; }
.menu_theme_islands { color: green; }
Имя модификатора элемента

menu__item_visible

menu__item_type_radio

HTML

<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 — Тег двойного подчеркивания?

спросил

10 лет, 2 месяца назад

Изменено 3 года, 8 месяцев назад

Просмотрено 66 тысяч раз

Я хочу сделать текст в HTML двойным подчеркиванием.

  

веб-сайт

У меня две линии внизу вместо одной. Есть ли для этого определенный тег или мне нужно сделать это в css?

  • HTML
  • CSS
8

Вы можете попробовать добавить это:

 h2.dblUnderlined { border-bottom: 3px double; }
 

Примечание. Ширина должна быть

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

0

Используйте границу и и подчеркните:

 .doubleUnderline {
    украшение текста: подчеркивание;
    нижняя граница: 1px сплошная #000;
}
Тест

Вот рабочая скрипка.

4

Самый простой способ — установить нижнюю границу типа double в CSS. Ширина должна быть не менее 3 пикселей, чтобы создать минимальную двойную границу (две границы шириной 1 пиксель с промежутком в 1 пиксель между ними).

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

веб-сайт , вероятно, не является серьезной. С простой разметкой

foobar

способ получить минимальную двойную рамку на странице — использовать

 h2 {
  нижняя граница: двойная 3px;
}
 

Если вы хотите, чтобы только текст заголовка был «подчеркнут», самый простой способ — использовать внутреннюю разметку, например

foobar и код CSS

 h2 span {
  нижняя граница: двойная 3px;
}
 
1

парни/девушки, это тоже работает, но больше похоже на традиционное двойное подчеркивание.

 .doubleUnderline {
     строка оформления текста: подчеркивание;
     стиль оформления текста: двойной;
}
 
2

FYI, на данный момент возможно следующее в 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 , упомянутый выше.

1

  

О нас

Это будет работать, только если вы хотите дважды подчеркнуть его в HTML.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

css — Как я могу дважды подчеркнуть текст внутри ячейки таблицы html?

спросил

Изменено 4 года, 7 месяцев назад

Просмотрено 9к раз

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

 .doubleUnderline {
украшение текста: подчеркивание;
нижняя граница: 1px сплошная #000;
}
 

Но это не то, чего я хотел. Я хочу, чтобы длина двойного подчеркивания была равна длине текстового содержимого.

  • HTML
  • CSS
  • HTML-таблица
17

Я взбил два примера.

С блочными элементами (например, p ) вы можете использовать встроенный блок , чтобы он не занимал всю длину страницы, а только текст.

 диапазон{
  нижняя граница: 1px сплошная # 000;
  украшение текста: подчеркивание;
}
        
п{
  нижняя граница: 1px сплошная # 000;
  украшение текста: подчеркивание;
  дисплей: встроенный блок;
} 
 Это вам текст

Это тоже текст для вас

Попробуйте это:

 
  <диапазон>
    Общий итог: ###,###,###.00
  

 

надеюсь, это сработает для вас 🙂

PS: если вам нужно настроить ширину, используйте не менее 3px. в противном случае он не будет отображаться как двойное подчеркивание

1

Предлагается text-decoration-style Правило в CSS3 со значением double, но оно еще не поддерживается в браузерах.

 .пример {
    строка оформления текста: подчеркивание;
    стиль оформления текста: двойной;
} 
 

Вот как это выглядит

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Автор записи

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

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