相关疑难解决方法(0)

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

奇怪的是:

>>> 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万
查看次数

标签 统计

equality ×1

memory ×1

python ×1