Смотрю примеры кода на различных сайтах и часто вижу переменные (или я не понимаю, что это) с вот таким символом «_». Например: _f или с двумя __. Гуглить не знаю по какому ключевому слову.
Пример кода:
def run_once(f): """ >>> @run_once ... def foo(n): return n + 1 >>> foo(7) 8 >>> foo(0) 8 """ def _f(*args, **kwargs): if not hasattr(_f, "_retval"): _f._retval = f(*args, **kwargs) return _f._retval return _f if __name__ == "__main__": import doctest doctest.testmod()
- Имя с одним подчёркиванием
_name
— по общему соглашению используется как аналогprotected
, защищённого имени в других языках. В других языках такое имя могут использовать только наследники класса. В питоне же это просто соглашение. -
Имя с двумя подчёркиваниями
__name
является аналогомprivate
(в питоне псевдоприватное), имя только для внутреннего использования внутри модуля или класса. У таких имён есть специальная защита, и обратиться к нему снаружи можно только зная класс, в котором этот атрибут определен. -
Имена с двумя подчёркиваниями с двух сторон имени
__name__
являются «магическими» методами, реализующими некоторую функциональность языка.
Просто используется чтобы переменная _f != f. Тоесть переменные похожи, но разные. Это достаточно популярный метод в python
Советую почитать официальную документацию
Имена, которые начинаются с одного подчёркивания (_variable
), предназначены для внутреннего использования.
Те же имена, которые начинаются и заканчиваются на двойное подчёркивание (__init__
), обычно являются уже встроенными и только переопределяются.