我在某处看到了Python中使用的_
字符:
print _
有人可以帮我解释一下它的作用吗?
答案 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在这里提供的变量赋值示例:)