Я видел функции и переменные, начинающиеся с символов подчеркивания на разных языках программирования (PHP и Python), и я смущен о значении, стоящем за ним.
Предполагая, что обычные правила используются в PHP:
Это связано с тем, что у PHP была слабая поддержка ООП и у нее не было концепции частной и защищенной (все было публично). Это соглашение разрешало разработчикам указывать переменную-член или метод был приватным или защищенным, чтобы лучше сообщать об этом пользователям кода.
Однако пользователи могли бы игнорировать эту семантику и, если хотите, выбрать «частные» и «защищенные» переменные и методы.
Единственное подчеркивание не имеет особого значения для атрибутов class / instance в Python. По соглашению он указывает частные переменные / функцию. from module import *
не будет импортировать функции и переменные, начиная с одного подчеркивания. (спасибо Би Рико).
double underscore вызывает имя mangling . Это позволяет классам иметь атрибут, отличный от одного с тем же именем в своих подклассах.