相关疑难解决方法(0)

"=="和"是"之间有区别吗?

我的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 equality reference semantics

630
推荐指数
11
解决办法
33万
查看次数

Python!=操作vs"不是"

在对这个问题的评论中,我看到了一个建议使用的声明

result is not None
Run Code Online (Sandbox Code Playgroud)

VS

result != None
Run Code Online (Sandbox Code Playgroud)

我想知道区别是什么,以及为什么可能推荐另一个?

python operators

223
推荐指数
5
解决办法
16万
查看次数

何时使用==以及何时使用?

奇怪的是:

>>> a = 123
>>> b = 123
>>> a is b
True
>>> a = 123.
>>> b = 123.
>>> a is b
False
Run Code Online (Sandbox Code Playgroud)

似乎a is b或多或少被定义为id(a) == id(b).以这种方式制作错误很容易:

basename, ext = os.path.splitext(fname)
if ext is '.mp3':
    # do something
else:
    # do something else
Run Code Online (Sandbox Code Playgroud)

一些fnames意外地在else块中结束了.修复很简单,我们应该使用ext == '.mp3',但if ext is '.mp3'表面上看起来似乎是一种很好的pythonic方式来编写它,它比"正确"的方式更具可读性.

由于字符串是不可变的,为什么它是错误的技术细节是什么?什么时候身份检查更好,什么时候检查更好?

python memory equality

23
推荐指数
3
解决办法
1万
查看次数

"是"如何在python中工作?

可以请某人解释如何在'if'条件下使用'is'.我正在使用分数模块,我遇到了一些麻烦:

>>> Fraction(0, 1) is 0
False
>>> float(Fraction(0, 1))
0.0
>>> float(Fraction(0,1)) is 0.0
False
Run Code Online (Sandbox Code Playgroud)

我发现的唯一工作是:

>>> F = Fraction(a,b)
>>> if F >= 0:
...     if F(0, 1) <= 0:
...                      ...
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里使用'是'?谢谢.

python module

9
推荐指数
3
解决办法
984
查看次数

标签 统计

python ×4

equality ×2

memory ×1

module ×1

operators ×1

reference ×1

semantics ×1