You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中字符串拼接与in运算的表达式返回布尔值False?

解析你的Python代码执行逻辑:运算符优先级的影响

先看你写的原代码:

course = 'Python for Beginners'
print("Python is in text: " + 'Python' in course)

问题根源:运算符优先级

Python中运算符有明确的优先级规则,其中字符串连接运算符+的优先级高于成员运算符in。所以这段代码的执行顺序和你预期的完全不同:

  1. 先执行字符串拼接:"Python is in text: " + 'Python',得到新字符串 'Python is in text: Python'
  2. 再执行成员判断:判断这个拼接后的字符串是否存在于course(即'Python for Beginners')中,显然不存在,所以返回False,最终打印出False。

而你预期的是先判断'Python' in course,再把结果和前面的字符串拼接,这就需要用括号强制改变执行顺序——括号的优先级是最高的,所以修改后的代码:

course = 'Python for Beginners'
print("Python is in text: " + str('Python' in course))

此时Python会先执行括号内的'Python' in course得到True,再转成字符串后和前面的文本拼接,输出你想要的结果。

关于逻辑运算符的无括号解析

你提到的这段代码:

value = 15
print(value > 10 and value < 30)

这里符合预期是因为比较运算符(>、<)的优先级高于逻辑运算符and,所以Python会先分别计算value > 10(得到True)和value < 30(得到True),再用and对两个布尔值做逻辑运算,最终返回True,和你直觉的执行顺序一致,所以不需要额外加括号。

额外建议:更Pythonic的写法

用f-string可以更简洁清晰地实现你的需求,避免优先级问题:

course = 'Python for Beginners'
print(f"Python is in text: {'Python' in course}")

内容的提问来源于stack exchange,提问作者user25235025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:12:11