【问题标题】:Confusion regarding logical AND in Python关于 Python 中的逻辑与的混淆
【发布时间】:2021-06-24 11:00:26
【问题描述】:

以下是 Python 中的玩具示例:

a = 2
b= 10
result = a<b and print("Hello")
print(bool(result))

输出是:

Hello
False

为什么输出是False 而不是True?因为result 计算为a&lt;b= 2&lt;10 = True,所以我们有result = True and print() = True and True = True。有人可以解释一下这个答案的原因吗?

【问题讨论】:

    标签: python operators boolean-logic


    【解决方案1】:

    print 返回None

    >>> print("Hello") is None
    True
    

    NoneFalsey 值:

    >>> bool(None)
    False
    

    所以你有True and False,它的计算结果是False

    【讨论】:

    • 感谢您的回答。有一件事不清楚,请您澄清一下吗?在第一行中,当您确实提到 print 等于 None 或 False 时,为什么在 print 语句之后输出 True? print() is None 是 True 是什么意思?
    • print 返回的是值None。然后我们检查is 真的是None:是的,我们看到True。 @Sm1
    • is 操作员检查身份。您也可以在此处使用== 进行检查,但由于None 是单音,因此惯用的是使用is 进行检查。您也可以将这些写在单独的行中,也许它会有所帮助:print_result = print("Hello") 然后print_result == None(或is)。 @Sm1
    • 感谢您的澄清。这种行为与 print 将返回 True 的 C 完全不同——没有任何结果,这使得 C 中的最终答案为 result = True and True = True 。这与 Python 为本示例给出的不同!
    • 简而言之,当booled 时,Python 的print 的返回值将始终 False。 C 的 printf 将是 False 仅当您根本不打印任何字符。否则它将在布尔上下文中为True。 @Sm1
    猜你喜欢
    • 2021-11-30
    • 2016-11-24
    • 1970-01-01
    • 2018-04-25
    • 2016-08-14
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多