【发布时间】:2020-01-08 11:07:13
【问题描述】:
我今天发现你可以在变量赋值中使用and,类似于使用or。我很少遇到以这种方式使用or,但从未听说过有人以这种方式使用and。这是否过于晦涩难懂,无法推荐使用,还是有一些具体的用例有助于提高代码的清晰度或简洁性?
a = 1
b = 3
# c is equal to b unless a or b is False; then c is equal to the "False" value. False may be 0, [], False, etc.
c = a and b
print(f'a = {a}, b = {b}, c = {c}')
>>>a = 1, b = 3, c = 3
d = 1
e = 5
# f is equal to d unless d is False; then f is equal to e. Again, "False" may be 0, [], False, etc.
f = d or e
print(f'd = {d}, e = {e}, f = {f}')
>>>d = 1, e = 5, f = 1
似乎有一个奇怪的不一致之处,显然可以使用运算符来评估条件并将变量设置为该条件的真实性(例如g = h > i 或j = k is l 等)。
不过,and 似乎是个例外。不是评估赋值的条件权,而是根据上面注释中描述的规则分配变量。为什么 c = a and b 不只评估为 True 或 False 取决于 a 和 b 具有真实值? (上面的例子将评估为True)
谢谢
【问题讨论】:
标签: python python-3.x variable-assignment