gpt4 book ai didi

python - 这个 python 语法是怎么回事? (c == c 在 s 中)

转载 作者:太空狗 更新时间:2023-10-29 18:26:40 24 4
gpt4 key购买 nike

有人刚刚向我展示了这个奇怪的 python 语法示例。为什么 [4] 有效?

我原以为它的计算结果为 [5] 或 [6],但两者都不起作用。这里是否进行了一些不应该进行的过早优化?

In [1]: s = 'abcd'

In [2]: c = 'b'

In [3]: c in s
Out[3]: True

In [4]: c == c in s
Out[4]: True

In [5]: True in s
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-e00149345694> in <module>()
----> 1 True in s

TypeError: 'in <string>' requires string as left operand, not bool

In [6]: c == True
Out[6]: False

最佳答案

这是允许 python 将多个运算符(如 <)链接在一起的相同语法糖。

例如:

>>> 0 < 1 < 2
True

这相当于(0<1) and (1<2) , 除了中间表达式只计算一次。

声明c == c in s同样等同于 (c == c) and (c in s) ,计算结果为 True .

为了强调前面的一点,中间的表达式只计算一次:

>>> def foo(x):
... print "Called foo(%d)" % x
... return x
...
>>> print 0 < foo(1) < 2
Called foo(1)
True

参见 Python Language Reference了解更多详情。

关于python - 这个 python 语法是怎么回事? (c == c 在 s 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com