Python中_的作用是什么?

时间:2014-11-12 19:52:03

标签: python syntax

我在某处看到了Python中使用的_字符:

print _

有人可以帮我解释一下它的作用吗?

3 个答案:

答案 0 :(得分:18)

在交互式解释器中,_始终引用最后输出的值:

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

在普通的Python 1 代码中,_只是一个典型的名称。你可以像任何其他人一样分配给它:

_ = 3
print _
# Output: 3

虽然我不建议实际这样做,因为_是一个可怕的名字。此外,按惯例,它用于表示仅占位符的名称。一个例子是:

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

使用_表示我们对2不感兴趣。另一个例子是:

for _ in range(10):
    function()

这意味着我们没有在循环中使用计数器变量。相反,我们只希望Python调用function十次,并且_需要有效的语法。


1 “Python”是指CPython,它是该语言的标准风格。其他实现可能选择以不同方式执行操作。例如,IPython有关于仅下划线名称的说法:

  

以下GLOBAL变量始终存在(因此请勿覆盖   它们):

[_] (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

答案 1 :(得分:1)

它只是另一个变量名,通常用于三个非常不同的东西:

在Python交互式shell中,_是输入的最后一个表达式的值:

>>> 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."))

答案 2 :(得分:0)

'_'是一个合法的python字符,就像大多数其他编程语言一样。我认为MATLAB是一个例外,你不能将它用于任何MATLAB文件名。我知道,因为我过去尝试过它而失败了。不知道自R2014b以来这是否已经改变。在python中,最好的例子是__init____self____str____repr__等。

不要在脑海中提出问题和混淆,只需输入并查看会发生什么。你不会破坏任何东西:D。打开Python IDLE,然后按CTRL +。您将看到许多以_甚至__命名的Python原生变量和函数。我非常喜欢@iCodez在这里提供的变量赋值示例:)