Разница между одинарным и двойным подчеркиванием Python

Есть 5 кейсов использования подчеркивая в Python:

  1. Для хранения значения последнего выражения в REPL
  2. Игнорирования значения
  3. Для определения специального значения функции или переменной
    • одинарное в начале или конце названия
    • двойное в начале
    • двойное в начале и конце
  4. Для использования в качестве функции локализации
  5. Для разделения символов числа (1_00 == 100)

Oct. 10, 2023, Источник

Символы одинарного и двойного подчеркивания имеют разные значения и использования:

1. Одинарное подчеркивание `_`:

  • Обычно используется для обозначения временных или ненужных переменных. Например, при распаковке кортежа в цикле можно использовать `_` для игнорирования значений, которые вам не нужны  
 for _, value in some_list_of_tuples:
         # используем только значение, переменная _ игнорируется
         print(value)
  • Может использоваться для предотвращения конфликтов с зарезервированными словами, такими как `lambda` или `class`. Например: 
     class_ = "MyClass"  # избегаем конфликта с зарезервированным словом class

   
2. Двойное подчеркивание `__`:

  • В начале имени атрибута или метода (например, `__attribute` или `__method`) используется для создания "приватных" атрибутов и методов. Такие атрибуты и методы становятся "скрытыми" внутри класса и не могут быть непосредственно доступны за пределами класса или его подклассов (хотя они могут быть доступны через механизм именования манглинга).
  • Используется для имитации перегрузки методов операторов. Например, метод `__add__()` может быть использован для переопределения оператора сложения `+` для объектов класса.

Пример приватного атрибута и перегрузки оператора:

class MyClass:
    def __init__(self):
        self.__private_attribute = 42

    def __add__(self, other):
        return self.__private_attribute + other

obj = MyClass()
print(obj.__private_attribute)  # Ошибка, так как __private_attribute является приватным атрибутом
print(obj.__add__(8))           # Выведет: 50, перегрузка оператора сложения

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

Feb. 17, 2024, easyoffer