相关疑难解决方法(0)

为什么使用'=='或'is'比较字符串有时会产生不同的结果?

我有一个Python程序,其中两个变量设置为该值'public'.在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为var1 == var2它则返回True.

现在,如果我打开我的Python解释器并进行相同的"是"比较,它就会成功.

>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

python string comparison identity equality

1076
推荐指数
13
解决办法
148万
查看次数

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

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

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

python string comparison equality

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

`==`运算符何时不等于`is`运算符?(蟒蛇)

我注意到我可以使用==运算符来比较所有本机数据类型(整数,字符串,布尔值,浮点数等)以及包含本机数据类型的列表,元组,集和字典.在这些情况下,==操作员检查两个对象是否相等.但在其他一些情况下(尝试比较我创建的类的实例),==运算符只检查两个变量是否引用相同的对象(因此在这些情况下,==运算符等同于is运算符)

我的问题是:==运营商什么时候做的不仅仅是比较身份?

编辑:我正在使用Python 3

python comparison equality

12
推荐指数
3
解决办法
4337
查看次数

标签 统计

comparison ×3

equality ×3

python ×3

string ×2

identity ×1