Python中下划线代表什么?

8

我是Python新手,所以我尝试阅读现有的代码。但我对以下语法有些困惑。

例如:

rlist, _, _ = select.select(sockets, [], [])

我知道select.select()需要三个列表作为参数(我猜[]表示空列表),但是_是否用于表示某种占位符?


3
_只是一个惯例,用于代表不需要用到的变量。不过,如果你同时使用gettext,要小心,因为_也是gettext的一个常见别名! - Michael Mior
5个回答

12

这只是一个变量的名称!通常人们会使用_来表示临时或不重要的变量。

正如其他人所说,_是gettext的常用别名,它是一个翻译库。如果你看到它被称为函数,例如:_('Hello, world!'),就可以确定它正在被用作gettext。

专业提示:在Python控制台中,它可用于检索上一条语句的结果。

>>> 3 + 4
7
>>> a = _
>>> print a
7

1
与其他大多数答案不同,这个是正确的。与我的答案不同,它实际上专注于告诉 OP 他想知道的内容。如果您可以在保持简洁易读的同时添加 gettext 警告,它将比所有其他答案(包括我的)加在一起好两倍。 :) - abarnert
谢谢!我会在那里加上 gettext 的警告。 - Thane Brimhall
1
好的,我已经点赞了,虽然我不能+2,但如果可以的话,我会这样做的。 :) - abarnert

3

这只是一个匿名变量,在Python中没有特殊的含义。可以将其与使用i作为循环计数器进行比较。

通常使用它来说明周围的代码将忽略该变量的值。

在Python交互式控制台中,最后一个表达式的结果被赋值给_,但在Python程序中不会保留这个赋值。


2

尽管其他答案说_在Python中没有特殊含义,但它实际上是交互提示符下最后一次打印的结果。

>>> 2+2
4
>>> _+2
6

(当然,如果没有交互提示,例如因为您正在从shell运行Python脚本,则它没有特殊含义。)

0
通常情况下,当您不需要再引用变量时,可以使用单个下划线来命名变量。例如,像这样的代码:
for _ in range(10):
    print "hello"

这只是打印 "hello" 十次,并且我们从不需要引用循环控制变量(在这种情况下是_)。

在你的例子中,select.select(sockets, [], []) 返回一个元组(或列表或集合),你似乎只需要第一个项目,因此使用下划线。


0

它代表一个匿名变量。它的使用是因为变量是必需的,但值可以被忽略。


这并不总是正确的...虽然当用作变量时几乎总是如此...但它也常用作gettext的翻译函数。 - Joran Beasley
1
@JoranBeasley - 在这个上下文中,它代表的就是这个意思。 - Aesthete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接