我的Google-fu让我失望了.
在Python中,以下两个相等的测试是否等效?
n = 5
# Test one.
if n == 5:
print 'Yay!'
# Test two.
if n is 5:
print 'Yay!'
Run Code Online (Sandbox Code Playgroud)
对于您要比较实例的对象(list比如说),这是否适用?
好的,所以这样的答案我的问题:
L = []
L.append(1)
if L == [1]:
print 'Yay!'
# Holds true, but...
if L is [1]:
print 'Yay!'
# Doesn't.
Run Code Online (Sandbox Code Playgroud)
所以==测试值测试的地方is是否是同一个对象?
可能重复:
Python"is"运算符使用整数意外运行
今天我试着调试我的项目,经过几个小时的分析,我得到了这个:
>>> (0-6) is -6
False
Run Code Online (Sandbox Code Playgroud)
但,
>>> (0-5) is -5
True
Run Code Online (Sandbox Code Playgroud)
你能解释一下,为什么?也许这是某种错误或非常奇怪的行为.
> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6)
<type 'int'>
>>> type(-6)
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>>
Run Code Online (Sandbox Code Playgroud) 我注意到有一个比较运算符is not.我应该把它翻译成
!=
Run Code Online (Sandbox Code Playgroud)
代替
== not
Run Code Online (Sandbox Code Playgroud) 可能重复:
使用"not"和"in"关键字的语法顺序
我的TA声称e not in c并不总是产生相同的结果not e in c(他并没有给出解释,为什么虽然).我从来没有亲自在任何人的代码中亲眼看到第二种形式(除了他和书籍解释说这两种形式是相同的)并且从未见过两者在行为上有所不同所以我对这种说法持怀疑态度.没有通过谷歌找到任何东西我决定来这里.
那么,任何人都有任何关于两者行为不同的情况的信息吗?