【问题标题】:Concatenation with 'in' keyword gives false results与“in”关键字连接会产生错误的结果
【发布时间】:2019-02-23 00:52:45
【问题描述】:

谁能解释一下为什么连接一个字符串和一个布尔值(由于使用了“in”关键字)会返回一个 False 值,而不是给出一个类型错误?

>>> var1 = "fish"

>>> var2 = "fi"

>>> print("True that " + var1 in var2) # str + bool returns False not TypeError
**False**

>>> print("True that ", var1 in var2) # str, bool works with comma method
True that  False

>>> print("True that " + var2 in var1) # str + bool returns False not TypeError
**False**

>>> print("True that ",var2 in var1) # stre , bool works with comma method
True that  True

>>> print(var2 in var1)
True

>>> type("True that ")
<class 'str'>

>>> type(var2 in var1)
<class 'bool'>

【问题讨论】:

    标签: python string boolean concatenation


    【解决方案1】:

    + 运算符的优先级高于 in 运算符,因此:

    "True that " + var1 in var2
    

    有效

    ("True that " + var1) in var2
    

    因此返回Falsevar1'fish'var2'fi'

    如果您希望+ 运算符引发TypeError,则必须将var1 in var2 括在括号中:

    "True that " + (var1 in var2)
    

    【讨论】:

    • 这很有意义!太感谢了。非常感谢您的帮助!
    【解决方案2】:

    您的优先顺序错误。 a + b in c 被解析为 (a + b) in c,而不是 a + (b in c)。没有发生字符串+布尔连接。

    【讨论】:

    • 非常感谢您的回复。现在很有意义。
    猜你喜欢
    • 2016-02-20
    • 2017-09-13
    • 1970-01-01
    • 2019-07-24
    • 2014-05-28
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多