2014-11-12 3 views

ответ

16

В интерактивном интерпретаторе, _ всегда относится к последнему outputed значения:

>>> 1 + 1 
2 
>>> print _ 
2 
>>> 2 + 2 
4 
>>> print _ 
4 
>>> 

В нормальном Python код однако _ это просто типичное имя. Вы можете назначить на него, как и любой другой:

_ = 3 
print _ 
# Output: 3 

Хотя я бы не рекомендовал на самом деле делать это, потому что _ это страшное название. Кроме того, он используется условным обозначением как имя, которое просто является заполнителем. Примером может быть:

a, _, b = [1, 2, 3] 

который использует _ означает, что мы не заинтересованы в 2. Другим примером является:

for _ in range(10): 
    function() 

, что означает, что мы не используем переменную счетчика внутри цикла. Вместо этого мы просто хотим, чтобы Python вызывал function десять раз и нуждался в _, чтобы иметь действительный синтаксис.


Под "Python", в смысле CPython, который является стандартным вкус языка. Другие реализации могут делать разные вещи. IPython, например, имеет это сказать о подчеркиваниями только имена: (! Так что не перезаписать их)

следующие глобальные переменные всегда существуют:

[_] (a single underscore) : stores previous output, like Python’s default interpreter. 
[__] (two underscores): next previous. 
[___] (three underscores): next-next previous. 

Источник: http://ipython.org/ipython-doc/rel-0.9.1/html/interactive/reference.html#output-caching-system

+0

ли это также работает в IPython Notebook? –

+0

@SalilPNavgire Он также работает в оболочке IPython, но [немного по-другому] (http://stackoverflow.com/a/17580309/846892). –

0

'_' является законным символом питона, как и большинство других языков программирования. Я думаю, что MATLAB является исключением, где вы не можете использовать это для любых имен файлов MATLAB. Я знаю, потому что я пробовал это в прошлом, и это не удалось. Не знаю, было ли это изменено с R2014b. В питоне, лучшие примеры __init__, __self__, __str__, __repr__ и т.д.

Вместо того, задавать вопросы и имеющие замешательства в своем уме, просто введите его и посмотреть, что происходит. Вы ничего не сломаете: D. Откройте PLEON IDLE и нажмите CTRL +. вы увидите множество собственных переменных и функций Python с именем _ или даже __.Я очень понравился пример присваивание переменной, представленную @iCodez здесь :)

1

Это просто другое имя переменной, которая обычно используется для трех очень разных вещей:

В интерактивной оболочке Python, _ это значение из Последнее выражение, введенное:

>>> 3 + 3 
6 
>>> _ == 6 
True 

он используется для указания того, что какая-то переменная только там, потому что оно должно быть и не будет использоваться дальше:

instance, _ = models.MyModel.objects.get_or_create(name="Whee") 

(здесь get_or_create вернул кортеж с двумя элементами, только один из которых будет , который будет использоваться нами).

Функция используется для перевода строки (часто ugettext) часто локально переименованы в _(), так что она занимает мало места на экране, как это возможно:

from django.utils.translation import ugettext as _ 

print(_("This is a translatable string."))