Python中var,_ = something是什么意思?字符串拼接吗?
我正在学习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
,第二个元素赋值给 _
(这个其实也是一个变量名,通常用来表示你不在乎这个值的情况)。