当我想引用该shell中执行的最后一个命令时,我常常在bash中键入!!
。
$ ls -la
drwxr-xr-x 4 me wheel 136 Jan 19 2013 wireshark_stuff
... (etc) ...
-rw-r--r-- 1 me wheel 11 Mar 13 13:51 old_PS1
$ !! |grep for_something_in_those_results
ls -la |grep for_something_in_those_results
/grep_results
有没有办法在python中执行此操作?
>>> complicated_dict.['long_key_name'][0]
(response)
>>> my_func(!!)
随着解释器命令变得越来越复杂,这将变得非常方便。当然,我可以使用过多的局部变量 - 但有时只是调用最后一个运行的东西很方便...
答案 0 :(得分:3)
在Python shell中计算的最后一个表达式的值可以eos
获得,即单个下划线。
答案 1 :(得分:3)
您可以使用_
字符来引用最后计算的值,并在其他计算中使用它:
>>> x = 5
>>> x + 10
15
>>> _
15
>>> _ + 2
17
答案 2 :(得分:1)
使用默认的Readline绑定, Control - P + Enter 可能是与!!
最接近的完全等价物;第一个键获取上一个命令;第二个执行它。您可以添加自定义绑定到.inputrc
以通过一次击键执行这两个功能。但请注意,这完全是面向行的;例如,如果您尝试在多行for
语句后使用此语句,则只会获取正文的最后一行,而不是整个for
语句。
_
变量存储上次计算的表达式的结果;但是,它并没有重新评估。最明显的是datetime.datetime.now
:
>>> datetime.datetime.now()
datetime.datetime(2018, 3, 22, 14, 14, 50, 360944)
>>> datetime.datetime.now()
datetime.datetime(2018, 3, 22, 14, 14, 51, 665947)
>>> _
datetime.datetime(2018, 3, 22, 14, 14, 51, 665947)
>>> _
datetime.datetime(2018, 3, 22, 14, 14, 51, 665947)
>>> _
datetime.datetime(2018, 3, 22, 14, 14, 51, 665947)
>>> datetime.datetime.now()
datetime.datetime(2018, 3, 22, 14, 14, 58, 404816)
答案 3 :(得分:0)
向上箭头/返回!只要您的口译员使用readline
支持编译。