什么是无功,_ =东西在Python是什么意思? 字符串连接?

我正在学习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()

如果我打印输出我得到串成产生的外壳的输出,所以我知道它是串联的变量。 但是,我找不到任何文档到,_公约的任何引用。 有人可以解释给我,让我肯定知道我是正确的使用它吗?

--------------解决方案-------------

一般形式

a, b = x, y

元组分配。 的相应部分被分配,所以上述的相当于:

a = x
b = y

在你的情况, call_command()返回两个元素的元组(这是process.communicate()返回)。 你分配的第一个output ,第二个到_ (这实际上是一个变量名,通常用于当你不关心的值来命名的东西)。

这里有两个公约:

  • 解包结果为两个元素的元组( ,
  • 我不关心元组所以使用的第二个元素_作为变量的名字。

在这种特殊情况下, process.communicate回报(stdout, stderr) ,但调用代码call_command不感兴趣stderr ,因此使用这种方式就可以得到stdout直接。 这将是或多或少等价于:

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

_在Python当你不打算使用结果的任何东西时通常使用一个有效的变量名。 所以你开箱结果git命令放到两个变量命名output_ ,但不会使用第二个(我假设它是退出状态或者标准错误输出)。

您在Perl看到这一点,也与undef ,而不是_

($dev, $ino, undef, undef, $uid, $gid) = stat($file);

见http://perldoc.perl.org/perldata.html#List-value-constructors

不,这不是字符串连接。 该_本身并并不意味着在Python什么。

在Python中,函数可以返回多个值,可以分配给多个变量在一个语句。 结合这两项功能,您可以编写代码,如:

def foo():
return 1, 2, 3

a, b, c = foo()
print(a) # prints 1
print(b) # prints 2
print(c) # prints 3

有在支持像这样多个值工作语言的共同约定,命名1 _意思是“我真的不关心什么这个变量结束。” 在您的示例,函数call_command返回什么命令写到标准输出在其第一个返回值,什么是写入标准错误在第二位。 谁编码,显然并不关心被命令报告的错误。

你提到的输出串联必须在其他地方发生。

分类:蟒蛇 时间:2015-03-15 人气:0
本文关键词: Python中,变量
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.920 (s). 10 q(s)