Что означает просто __ двойное подчеркивание как имя переменной? Просто __ не следуйте другим символам - PullRequest
0 голосов
/ 07 декабря 2018

Когда я запускаю ipython в Windows 10 и выполняю dir функцию, получаю это:

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: dir()
Out[1]:
['In',
 'Out',
 '_',
 '__',
 '___',
 '__builtin__',
 '__builtins__',
 '__doc__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 '_dh',
 '_i',
 '_i1',
 '_ih',
 '_ii',
 '_iii',
 '_oh',
 'exit',
 'get_ipython',
 'quit']

In [2]:

Существует _, __ и ___ выше, чтосмысл этих переменных как встроенной переменной?

А также не получил значения _i, _iii, кажется, эта вещь определена только в IPython.

_oh показывает dict, который хранит все выходные данные на ipython.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Согласно IPython документы , значения _* кэшируют значения последних выходных данных:

Всегда существуют следующие переменные:

  • _ (одно подчеркивание): сохраняет предыдущий вывод, как и интерпретатор Python по умолчанию.
  • __ (два подчеркивания): следующий предыдущий.
  • ___ (три подчеркивания):следующая-следующая предыдущая.

И наоборот, переменная _i* хранит последние входные данные :

_i, _ii, _iii: сохранить предыдущий, следующий предыдущий и следующий-следующий предыдущий ввод.

0 голосов
/ 07 декабря 2018

_ используется для: 1. интерпретатора, 2. после имени, 3. перед именем fe для игнорирования значений:

# Ignore a value 
for _ in range(5) 
    print "Test"

# Ignore a value when unpacking 
a, b, _, _ = my_method(var1)
...