Interpreter języka Python przypisuje ostatnią wartość wyrażenia do _
.
Takie zachowanie jest ograniczona tylko do REPL interpreter, i ma na celu pomóc w interaktywnych sesjach Kodowanie:
>>> import math
>>> math.pow(3.0, 5)
243.0
>>> result = _
>>> result
243.0
standardowy interpreter Pythona idzie do jakiejś długości nie deptać wartości zdefiniowanych przez użytkownika mimo; jeśli sami przypisaliście coś w innym przypadku do _
, interpreter nie zastąpi tego (technicznie rzecz biorąc, _
variable is a __builtin__
attribute, twoje własne zadania to "normalne" globale). Nie używasz jednak standardowego interpretera Pythona; używasz IPython, i że tłumacz nie jest tak ostrożny.
ipython documents this behaviour explicitly:
Poniższy zawsze istnieją zmienne globalne (więc nie nadpisać je!):
[_]
(jedno podkreślenie): przechowuje poprzednią wyjściowych, jak Pythona domyślnego tłumacza .
[...]
Poza interpretera Pythona, _
jest umownie jako nazwa funkcji tekstu tłumaczyć (patrz gettext
module; narzędzia zewnętrzne szukać tej funkcji do wyciągać struny do tłumaczenia).
W pętlach, używając _
jako celu przypisania, czytelnicy twojego kodu będą ignorować tę wartość; na przykład [random.random() for _ in range(5)]
, aby wygenerować listę 5 losowych wartości zmiennoprzecinkowych.
Możliwy duplikat [Mercurial/Python - co robi ta funkcja podkreślenia?] (Http://stackoverflow.com/questions/3077227/mercurial-python-what-does-the-underscore-function-do) – dimo414
@ dimo414: Nie, to nie jest * duplikat tego pytania. Dotykam tego użycia funkcji podkreślenia w mojej odpowiedzi, ale to ** nie **, o co pyta OP. Chodzi o to, dlaczego interaktywny interpreter Pythona przypisał coś innego do '_'. –
Masz rację, zdałem sobie z tego sprawę po opublikowaniu możliwego duplikatu. Ponieważ nie możemy [odwołać głosowania na zamknięcie] (http://meta.stackexchange.com/questions/915/can-we-have-the-ability-to-rescind-a-close-vote-before-it -close) Doszedłem do wniosku, że zostawienie referencji było bardziej pouczające (ludzie na pewno mogliby wylądować na tej stronie, szukając odpowiedzi na połączone pytanie), niż usunąć komentarz. – dimo414