Найти в Дзене
Self Study

Что означает одинарный символ подчеркивания в начале имени переменной в Python?

Введение Довольно часто, в модулях, написанных на Python, можно встретить переменные с одним символом подчеркивания в начале имени. Давайте попробуем разобраться, что это означает. Подсказка Символ подчеркивания _ в начале имени переменной имеет несколько значений. И первое из них - это подсказка для программиста. Когда программист видит в коде переменную такого вида _var, это означает, что она предназначена для внутреннего использования. Как правило, когда вы пишите какой-то модуль, вы хотите чтобы часть функций и / или переменных были видны только внутри этого модуля. Давайте создадим два модуля. Назовем первый модуль dunder.py, а второй - main.py и поместим в них следующий код: В dunder.py В main.py На последнем рисунке я так же указал вывод программы. Как видите, мы без проблем смогли обратится к переменной _x. Если вы используете PyCharm, то после ввода названия модуля и ".", будет выведена подсказка: Как видите, нам показаны две переменные, хотя _x является переменной для вну
Оглавление

Введение

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

Подсказка

Символ подчеркивания _ в начале имени переменной имеет несколько значений. И первое из них - это подсказка для программиста.

Когда программист видит в коде переменную такого вида _var, это означает, что она предназначена для внутреннего использования. Как правило, когда вы пишите какой-то модуль, вы хотите чтобы часть функций и / или переменных были видны только внутри этого модуля.

Давайте создадим два модуля. Назовем первый модуль dunder.py, а второй - main.py и поместим в них следующий код:

В dunder.py

dunder.py
dunder.py

В main.py

main.py
main.py

На последнем рисунке я так же указал вывод программы. Как видите, мы без проблем смогли обратится к переменной _x. Если вы используете PyCharm, то после ввода названия модуля и ".", будет выведена подсказка:

подсказка
подсказка

Как видите, нам показаны две переменные, хотя _x является переменной для внутреннего пользования. Это означает, что подчеркивание всего лишь договоренность между программистами, которая, как я уже говорил, является подсказкой, что лучше эту переменную не трогать, чтобы не сломать какие-то функции, объявленные в импортируемом модуле.

Сокрытие переменной

Второе значение подчеркивания проявляется, когда мы импортируем модуль с помощью инструкции from module import *.

импортируем наш модуль dunder.py
импортируем наш модуль dunder.py
попытка обратиться к внутренней переменной _x
попытка обратиться к внутренней переменной _x

Так вот, если вы импортируете модуль указанным выше способом, то Python не будет импортировать имена с начальным символом подчеркивания (если только в этом модуле не определен специальный спискок __all__, который отменяет это поведение).

Источники

1. Дэн Бейдер, "Чистый Python. Тонкости программирования для профи", С. 45 - 47.