Python中var,_ = something是什么意思?字符串拼接吗?

6 投票
5 回答
3127 浏览
提问于 2025-04-17 11:59

我正在学习Python,正在阅读一个示例脚本,其中有一些变量定义,看起来像这样:

output,_ = call_command('git status')
output,_ = call_command('pwd')

def call_command(command):
    process = subprocess.Popen(command.split(' '),
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
    return process.communicate()

当我打印输出时,得到的结果是把这些内容连在一起,所以我知道它是在把变量连接起来。但是我在任何文档中都找不到关于这个,_ 约定的说明。有人能给我解释一下,让我确认我使用得是否正确吗?

5 个回答

3

_ 在Python中是一个有效的变量名,通常用来表示你不打算使用某个结果。所以你把 git 命令的结果拆分成两个变量,一个叫 output,另一个叫 _,但你并不打算使用第二个变量(我猜它可能是退出状态或者标准错误输出)。

4

这里有两种约定:

  • 把结果拆分成一个包含两个元素的元组(,
  • 我不关心元组中的第二个元素,所以用_来命名那个变量。

在这个特定的情况下,process.communicate 返回的是(stdout, stderr),但是调用call_command的代码对stderr不感兴趣,所以它用这种写法直接获取stdout。这大致相当于:

result = call_command(<command>)
stdout = result[0]
13

一般来说,

a, b = x, y

这就是所谓的元组赋值。对应的部分会被赋值,所以上面的内容可以理解为:

a = x
b = y

在你的例子中,call_command() 返回的是一个包含两个元素的元组(这和 process.communicate() 返回的结果是一样的)。你把第一个元素赋值给 output,第二个元素赋值给 _(这个其实也是一个变量名,通常用来表示你不在乎这个值的情况)。

撰写回答