Одинарное подчеркивание (_) в Python имеет несколько применений:
for или присваивании, чтобы указать на переменную, значение которой не будет использоваться.gettext).Двойное подчеркивание (__) в Python используется для:
Манглинг имен (name mangling): Используется для создания "полу-приватных" атрибутов и методов классов. Интерпретатор Python изменяет имя такого атрибута, добавляя в начало _ИмяКласса, что делает его доступ более сложным извне класса.
python
"Dunder" методы (Magic methods): Специальные методы, начинающиеся и заканчивающиеся двойным подчеркиванием (например, __init__, __str__, __add__), которые вызываются при выполнении определенных операций (инициализация объекта, преобразование в строку, сложение и т.д.).
Сравнение:
| Признак | Одинарное подчеркивание (_) | Двойное подчеркивание (__) |
|---|---|---|
| Назначение | Конвенция для обозначения внутренних элементов; временное хранение; игнорирование переменной; интернационализация. | Манглинг имен (для "полу-приватных" элементов класса); "dunder" методы. |
| Обработка интерпретатором | Интерпретатор не выполняет специальную обработку имени. | Интерпретатор выполняет манглинг имен для атрибутов и методов класса, начинающихся с __ (без завершающего __). |
| Доступ извне класса | Прямой доступ возможен. | Прямой доступ затруднен из-за манглинга имени. Доступ через имя _ИмяКласса__имя. |
Таким образом, основное различие заключается в том, что двойное подчеркивание инициирует механизм манглинга имен интерпретатором для атрибутов и методов классов, тогда как одинарное подчеркивание является скорее соглашением о наименовании, не влияя на поведение интерпретатора напрямую (за исключением интерактивной оболочки и интернационализации).