【问题标题】:Why does 'a' and 'b' equal 'b' in Python? [duplicate]为什么'a'和'b'在Python中等于'b'? [复制]
【发布时间】:2019-09-24 11:05:50
【问题描述】:

Python 中的'a' and 'b' 是什么意思,为什么它等于'b'?为什么不等于'a'

>>> 'a' and 'b'
'b'

【问题讨论】:

  • 您能否提供一个代码示例来解释您所看到的内容?
  • 出于同样的原因True and False 等于False,或者'True1' and 'True2' 等于'True2'
  • @KyleWillmon:这就是代码示例。 'a' and 'b'。它评估为'b'
  • @CharlesDuffy 这绝对不是模糊的,但 True and False 等于 False 因为布尔评估,而不是因为 False 是第二个。
  • @GalSivan,是的,但是 and 的工作方式是,如果第一个操作数是 truthy(与 True 不同),它会计算为第二个,否则它评估为第一个。这样做的最终效果与您描述的布尔运算相同,但它还允许各个值保留其身份,而不是将它们强制为 TrueFalse 单例(这些值已经不是那些单例了)。跨度>

标签: python python-3.x


【解决方案1】:

来自 Pycharm 文档:

表达式 x 和 y 首先计算 x;如果 x 为假,则返回其值;否则,计算 y 并返回结果值。

因为 'a' 不是 False 'b' 被评估并返回。

也很高兴知道。什么是真,什么是假:

以下值被解释为 false:False、None、所有类型的数字零以及空字符串和容器(包括字符串、元组、列表、字典、集合和冻结集)。所有其他值都被解释为 true。

【讨论】:

  • 第二部分“因为'b'是假的,'b'都没有返回。”是错误的和不相关的。我会删除它并将其余部分更改为 'b' 被评估并返回。
【解决方案2】:

'a''b''a' and 'b' 的可接受答案(因为两者都是真实的),但只有False'a' and False 的可接受答案,就像只有0 一样对'a' and 0 的可接受答案(因为此评估的结果必须为 false-y 才能在逻辑上正确)。

当左手为真时,让短路布尔评估遵循右手路径允许有一个适用于所有情况的单一规则。

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2021-10-06
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多