Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Переменные с _ в python

#python


Смотрю примеры кода на различных сайтах и часто вижу переменные (или я не понимаю,
что это) с вот таким символом "_". Например: _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()

    


Ответы

Ответ 1



Имя с одним подчёркиванием _name - по общему соглашению используется как аналог protected, защищённого имени в других языках. В других языках такое имя могут использовать только наследники класса. В питоне же это просто соглашение. Имя с двумя подчёркиваниями __name является аналогом private (в питоне псевдоприватное), имя только для внутреннего использования внутри модуля или класса. У таких имён есть специальная защита, и обратиться к нему снаружи можно только зная класс, в котором этот атрибут определен. Имена с двумя подчёркиваниями с двух сторон имени __name__ являются "магическими" методами, реализующими некоторую функциональность языка.

Ответ 2



Советую почитать официальную документацию Имена, которые начинаются с одного подчёркивания (_variable), предназначены для внутреннего использования. Те же имена, которые начинаются и заканчиваются на двойное подчёркивание (__init__), обычно являются уже встроенными и только переопределяются.

Ответ 3



Просто используется чтобы переменная _f != f. Тоесть переменные похожи, но разные. Это достаточно популярный метод в python

Комментариев нет:

Отправить комментарий