为什么Python中的逗号符号返回true?

时间:2017-06-20 13:50:48

标签: python operation

我想知道为什么逗号符号","返回true:

mutant = toolbox.clone(ind1)
ind2, = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print (ind2 is mutant)
>>>True

但是当我删除逗号符号时:

ind2 = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print (ind2 is mutant)
>>>False

它返回false。 如果有人能够解释这背后的机制,那将是非常感激的。

2 个答案:

答案 0 :(得分:3)

您正在呼叫的Assignment statements reference documenation会返回包含单个值的元组

  

返回:一个人的元组。

当您不使用逗号时,您将结果元组分配给单个变量。

使用逗号,您要求Python将右侧的iterable解包为左侧的一系列名称;因为左手侧和右手侧只有一个元素,这项工作。您将返回的元组中的解压缩为单个变量。

请参阅http://www.codigo-postal.pt/?cp4=4710&cp3=

  

赋值语句计算表达式列表(请记住,这可以是单个表达式或以逗号分隔的列表,后者产生元组)并将单个结果对象从左到右分配给每个目标列表。

如果您想在不使用可迭代赋值的情况下测试该单个值,则必须手动从元组中获取该值:

ind2 = tools.mutGaussian(mutant, mu=0.0, sigma=0.2, indpb=0.2)
print(ind2[0] is mutant)

请注意[0]索引。

答案 1 :(得分:-1)

当您使用逗号声明或指定变量时,您正在创建tuple