Jestem przyzwyczajony do pisania !!
w bashu, gdy chcę odwołać się do ostatniego polecenia wykonanego w tej powłoce.
$ 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
Czy istnieje sposób to zrobić w python?
>>> complicated_dict.["long_key_name"][0]
(response)
>>> my_func(!!)
Byłoby to bardzo przydatne jako tłumaczkomendy stają się coraz bardziej skomplikowane. Pewnie, mógłbym użyć mnóstwa zmiennych lokalnych - ale czasami jest to przydatne, aby wywołać ostatnie działanie ...
Odpowiedzi:
3 dla odpowiedzi № 1Wartość ostatniego wyrażenia ocenianego w powłoce Python jest dostępna jako _
, czyli pojedyncze podkreślenie.
3 dla odpowiedzi № 2
Możesz użyć _
znak, aby odnieść się do ostatniej obliczonej wartości i użyć jej w innych obliczeniach:
>>> x = 5
>>> x + 10
15
>>> _
15
>>> _ + 2
17
0 dla odpowiedzi № 3
Korzystanie z domyślnych powiązań Readline, Kontrola-P + Wchodzić jest prawdopodobnie najbliższym dokładnym odpowiednikiem !!
; pierwszy klucz pobiera poprzednie polecenie; drugi wykonuje to. Prawdopodobnie możesz dodać niestandardowe powiązanie do .inputrc
wykonać obie funkcje jednym naciśnięciem klawisza. Należy jednak zauważyć, że jest to całkowicie liniowe; jeśli spróbujesz użyć tego wieloliniowego for
oświadczenie, na przykład, dostaniesz tylko ostatnią linię ciała, a nie całą for
komunikat.
The _
variable przechowuje wynik ostatniego obliczonego wyrażenia; nie jest to jednak w żaden sposób sprawdzone, co widać najwyraźniej 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)
0 dla odpowiedzi nr 4
Strzałka w górę / powrót! Tak długo jak twój tłumacz był skompilowany readline
wsparcie.