我开始喜欢Scala REPL能够使用resX引用以前的计算,并想知道是否有办法在Python / bpython / iPython REPL中访问它。
答案 0 :(得分:4)
默认的python解释器通过名称_
操作变量以获得最后返回的值(包括返回它的表达式的None
)。 iPython将其扩展为__
和___
以及Out
,这是一个包含所有返回结果的字典。
此功能仅在交互式口译员中 。在常规python模块中,_
未定义(除非您定义它)。
答案 1 :(得分:3)
看一下这个python启动脚本(Python会查找一个导出PYTHONSTARTUP
变量,该变量应该包含脚本的路径,例如$HOME/.pythonrc.py
):
作为备份:
h = [None] # history
class Prompt:
"""A prompt a history mechanism.
From http://www.norvig.com/python-iaq.html
"""
def __init__(self, prompt='h[%d] >>> '):
self.prompt = prompt
def __str__(self):
try:
if _ not in h: h.append(_)
except NameError:
pass
return self.prompt % len(h)
def __radd__(self, other):
return str(other) + str(self)
sys.ps1 = Prompt()
sys.ps2 = ' ... '
用法:
h[1] >>> lambda x: x * 2
<function <lambda> at 0xb7dab41c>
h[2] >>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
h[3] >>> map(h[1], h[2])
[2, 4, 6, 8, 10]