我看到有些地方在Python中使用下划线_
字符,例如:
print _
有人能帮我解释一下它是做什么的吗?
在交互式解释器中,_
总是指代最后输出的值:
>>> 1 + 1
2
>>> print _
2
>>> 2 + 2
4
>>> print _
4
>>>
在正常的Python1代码中,_
只是一个典型的名称。您可以像任何其他名称一样对其进行赋值:
_ = 3
print _
# Output: 3
虽然我不建议真的这样做,因为_
是一个可怕的名称。此外,按照惯例,它用来表示一个仅作为占位符的名称。例如:
a, _, b = [1, 2, 3]
其中使用_
表示我们不关心2
。另一个例子是:
for _ in range(10):
function()
这意味着我们在循环内部没有使用计数器变量。相反,我们只希望Python调用function
十次,并需要_
具有有效语法。
1 在“Python”中,我指的是CPython,它是该语言的标准版本。其他实现可能选择以不同的方式进行操作。例如,IPython关于下划线命名的说明如下:
以下全局变量始终存在(因此不要覆盖它们!):
来源:http://ipython.org/ipython-doc/rel-0.9.1/html/interactive/reference.html#output-caching-system
[_] (a single underscore) : stores previous output, like Python’s default interpreter. [__] (two underscores): next previous. [___] (three underscores): next-next previous.
这只是另一个变量名,通常用于三个非常不同的事情:
在Python交互式shell中,_是输入的最后一个表达式的值:
>>> 3 + 3
6
>>> _ == 6
True
它用于指示某些变量仅仅是因为需要而存在,不会被进一步使用:
instance, _ = models.MyModel.objects.get_or_create(name="Whee")
from django.utils.translation import ugettext as _
print(_("This is a translatable string."))
'_'
是Python中的合法字符,就像大多数其他编程语言一样。我认为MATLAB是一个例外,在MATLAB文件名中不能使用它。我知道这是因为我曾经尝试过,但失败了。不知道自R2014b以来是否有所改变。在Python中,最好的例子是__init__
、__self__
、__str__
、__repr__
等。
与其问问题并让自己困惑,不如直接输入并查看会发生什么。你不会破坏任何东西 :D。打开Python IDLE,按下CTRL+.,你会看到很多以_
或甚至__
命名的Python本地变量和函数。我非常喜欢@iCodez提供的变量赋值示例 :)