Ответ 1
В стандартном REPL Python _
представляет последнее возвращаемое значение - в точке, где вы вызывали len(_)
, _
было значением 'abc'
.
Например:
>>> 10
10
>>> _
10
>>> _ + 5
15
>>> _ + 5
20
Это обрабатывается sys.displayhook
, а переменная _
находится в builtins
с такими вещами, как int
и sum
, поэтому вы не смогли найти его в globals()
.
Обратите внимание, что такой функции не существует в сценариях Python. В script, _
не имеет специального значения и не будет автоматически задано значение, созданное предыдущим оператором.
Кроме того, остерегайтесь переназначения _
в REPL, если вы хотите использовать его, как указано выше!
>>> _ = "underscore"
>>> 10
10
>>> _ + 5
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
_ + 5
TypeError: cannot concatenate 'str' and 'int' objects
Это создает глобальную переменную, которая скрывает переменную _
во встроенных модулях. Чтобы отменить назначение (и удалить _
из глобальных переменных), вам необходимо:
>>> del _
тогда функциональность вернется в нормальное состояние (снова будет отображаться builtins._
).