相关疑难解决方法(0)

Python中的字符串比较:是vs ==

我注意到我写的一个Python脚本是松散的,并将其追溯到一个无限循环,循环条件是while line is not ''.在调试器中运行它,事实证明该行''.当我改为!=''而不是is not '',它工作得很好.

另外,通常认为默认情况下使用'=='会更好,即使在比较int或Boolean值时也是如此?我一直喜欢使用'是'因为我发现它更美观和pythonic(这就是我陷入这个陷阱...),但我想知道它是否只是为了保留当你关心找到两个具有相同id的对象.

python string comparison equality

524
推荐指数
4
解决办法
97万
查看次数

多次重复`in`关键字

我错误地in在表达式中使用了多个关键字,但代码仍然有效.

的意义是什么:

"a" in "bar" in "foo"   # in ... ?
Run Code Online (Sandbox Code Playgroud)

天真地我认为这相当于("a" in "bar") in "foo""a" in ("bar" in "foo")但事实并非如此,因为两者都无效.我在python2或3中得到了相同的行为.

python

25
推荐指数
1
解决办法
1977
查看次数

与 Python 的 `in` 运算符相关的混淆

我发现 Python 的in操作符有奇怪的行为

d = {}
'k' in d == False # False! 
Run Code Online (Sandbox Code Playgroud)

我认为这是因为优先级:

('k' in d) == False # True, it's okay
'k' in (d == False) # Error, it's also okay
Run Code Online (Sandbox Code Playgroud)

但是,什么优先级评估以下表达式呢?

d = {}
'k' in d == False
Run Code Online (Sandbox Code Playgroud)

如果是因为优先级错误,为什么它不会触发错误,例如:

'k' in (d == False)
Run Code Online (Sandbox Code Playgroud)

换句话说,这个表达式在 Python 的底层发生了什么?

'k' in d == False
Run Code Online (Sandbox Code Playgroud)

python

13
推荐指数
1
解决办法
474
查看次数

奇怪的行为:Python 中的“12 in [12,13,14] == True”是什么意思

我本来希望它在左边或右边有括号。

但它似乎在做别的事情!

>>> 12 in [12,13,14] == True
False
>>> (12 in [12,13,13]) == True
True
>>> 12 in ([12,13,14] == True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
1
解决办法
118
查看次数

标签 统计

python ×4

comparison ×1

equality ×1

string ×1