理解python中__(双下划线)的实际用法

时间:2015-12-03 05:30:09

标签: python variables

我看到函数返回元组并在接收结束时,有时我看到类似这样的语法。

def foo():
    return (True, False)

foo, __ = foo()

我调查的是,__(双下划线)不会给出pep8错误,好像它没有在任何地方使用。

求:

  1. 我们应该使用这个的实践情况
  2. 我们应该避免的情况
  3. 任何替代方案。

1 个答案:

答案 0 :(得分:4)

正如AndrésPérez-Albela H.所提到的,双重下划线通常用于“魔术方法”,如__init__()。在该用法中,他们引导跟踪方法名称。方法(或变量)名称前面的单个下划线(如_index)通常表示“这是私有成员变量或私有方法,不应被其他代码使用”。这只是约定,对Python解释器没有任何特殊含义,而一些双下划线方法具有特殊含义。

现在,至于您提出的问题:__(双下划线)作为变量名称在Python编码中不常见。更常见的约定是对任何其内容不需要的变量使用_(单个下划线)。有关详细信息,请参阅What is the purpose of the single underscore "_" variable in Python?

但是,有时候程序员可能希望避免使用_作为变量名称。具体来说,如果他在交互式Python解释器会话中运行代码。在交互式会话中,从前一个表达式返回的值存储在名为_的变量中。因此,如果您习惯使用_作为“我不关心其内容的变量”,但您处于交互式Python解释器会话中,则可能会切换到使用__来实现此目的代替。

所以我最好的猜测是,您看到的示例代码旨在在交互式Python会话中运行,其中_已经具有特殊含义。所以编写代码的人使用__代替他的一次性变量,而不是更常用的_