在python中这种链分配和比较是什么?

时间:2016-08-25 19:39:08

标签: python python-2.7

(Python 2.7问题)

我在python代码库中找到了类似于以下的模式:

>>> a = b == 7
>>> a
True
>>> b
7
>>> a = b == -7
>>> a
False
>>> b
7

我正在寻找这个术语 - 我发现其他一些答案(a = b = 7)称为“链分配”。什么是格式(a = b == 7)?

3 个答案:

答案 0 :(得分:1)

CREATE TABLE test (a BIT(3), b BIT VARYING(5)); INSERT INTO test VALUES (B'101', B'00'); INSERT INTO test VALUES (B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) INSERT INTO test VALUES (B'10'::bit(3), B'101'); SELECT * FROM test; a | b -----+----- 101 | 00 100 | 101 是平等的比较。比较结果是分配给b == 7的布尔值。

答案 1 :(得分:1)

这只是一个正常的赋值语句。如果您对如何解析一行python感到好奇,请尝试ast模块:

>>> import ast
>>> ast.dump(ast.parse('a = b == 7'), annotate_fields=False)
"Module([Assign([Name('a', Store())], Compare(Name('b', Load()), [Eq()], [Num(7)]))])"

我们可以看到与b7进行了平等比较,并且该结果用于a的分配。

答案 2 :(得分:1)

这只是将布尔表达式赋值给变量:

 a    =      (b == 7)
#               ^ comparation expression that evaluate to True or False 
#     ^ assign the expression to a